可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
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)