【问题标题】:mysql_select_db() expects parameter 2 to be resource, object givenmysql_select_db() 期望参数 2 是资源,给定对象
【发布时间】:2013-04-14 17:53:47
【问题描述】:

我是使用 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 

为什么会这样?我该如何解决?

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    您同时使用mysqlimysql 只需更改

    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 Reference 扩展与数据库的连接

    Mysql 现在已被弃用,因此使用mysqliPDO 是正确的

    【讨论】:

    • 是的,那是错误 :) 谢谢,你能解释一下区别吗 :)?
    • 它们是两个不同的与mysql通信的API。 mysql_* 函数已弃用,请使用 mysqli_* 函数。
    【解决方案2】:

    除了始终如一地使用mysqli_*(如Fabio's answer中提到的),还有一个额外的问题(和一个建议):

    • 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());
      

    【讨论】:

      【解决方案3】:

      您必须按照Fabio 的指示将mysql_select_db 更改为mysqli_select_db,但您会收到错误消息

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

      对于遇到这种情况的人,颠倒参数的顺序,比如在这种情况下给

      $selected_db = mysqli_select_db($conn, $db_name)
      

      【讨论】:

        猜你喜欢
        • 2016-03-24
        • 2015-05-26
        • 2011-09-23
        • 2015-08-24
        • 1970-01-01
        • 2011-06-05
        • 2011-03-26
        • 2012-01-21
        • 1970-01-01
        相关资源
        最近更新 更多