我是PHP新手。我做了一些简单的东西来连接MySQL并选择一个数据库:
$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());
当我测试它时,我得到了一个成功建立的连接和以下警告:
mysql_select_db() expects parameter 2 to be resource, object given
为什么会发生这种情况?我该怎么修理它?
您同时使用mysqli
和mysql
,只需更改
mysql_select_db()
mysqli_select_db
引用http://php.net/manual/en/mysqli.select-db.php
updated
当你使用mysql_select_db
你应该使用mysql
api,所以你必须建立连接到数据库与mysql sintax mysql_connect
参考
Mysql现在已弃用,所以使用mysqli
或PDO
除了始终如一地使用mysqli_*(正如Fabio的回答中提到的)之外,还有一个额外的问题(和建议):
mysql_select_database
中的参数顺序为数据库名称、连接,mysqli_select_db
中的参数顺序为连接、数据库名称。mysqli_select_db($conn, $db_name);
作为建议,
mysqli_connect
包含可选的第四个参数,用于连接到特定的数据库。这将允许您完全避免调用mysql_select_db
。$conn = mysqli_connect($db_host, $db_admin, $db_pass, $db_name) or die(mysqli_connect_error());
您必须将mysql_select_db
更改为mysqli_select_db
,如Fabio
所指出的,但您会得到一个错误
mysqli_select_db() expects parameter 1 to be mysqli, string given
对于遇到这种情况的人,将参数的顺序颠倒,如For,在这种情况下给出
$selected_db = mysqli_select_db($conn, $db_name)