mysql_select_db() expects parameter 2 to be resource, object given

匿名 (未验证) 提交于 2019-12-03 01:07:01

问题:

I'm new in using PHP. I made something simple to connect to MySQL and select a database:

$conn = mysqli_connect($db_host, $db_admin, $db_pass) or die(mysql_error()); // these variables are previously declared and initialized   $selected_db = mysql_select_db($db_name, $conn) or die(mysql_error()); 

When I tested it, I got a successfully-established connection and the following warning:

mysql_select_db() expects parameter 2 to be resource, object given  

Why did this happen? How can I fix it?

回答1:

You are using both mysqli and mysql simply change

mysql_select_db()

With

mysqli_select_db 

Reference http://php.net/manual/en/mysqli.select-db.php

updated

When you use mysql_select_db you are supposed to use mysql api and so you have to exatibilish connection to database with mysql sintax mysql_connect Reference

Mysql is now deprecated so it's correct either to use mysqli or PDO



回答2:

In addition to using mysqli_* consistently (as mentioned in Fabio's answer), there is an additional problem (and a suggestion):

  • While the parameter order in mysql_select_database are database name, connection, the order of parameters in mysqli_select_db are connection, database name.

    mysqli_select_db($conn, $db_name); 
  • As a suggestion, mysqli_connect includes an optional fourth parameter to connect to a particular database. This would allow you to avoid calling mysql_select_db altogether.

    $conn = mysqli_connect($db_host, $db_admin, $db_pass, $db_name)     or die(mysqli_connect_error()); 


回答3:

You have to change mysql_select_db to mysqli_select_db as pointed out by Fabio but you'll get an error

mysqli_select_db() expects parameter 1 to be mysqli, string given 

For someone experiencing this, reverse the order of parameters, like for in this case give

$selected_db = mysqli_select_db($conn, $db_name) 


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!