为什么mysqli_connect没有工作但mysql_connect是?

时间:2011-06-17 18:55:36

标签: php mysql

有什么理由可以解决这个问题吗?

以下是代码:

$dbc = mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
echo $dbc;
if(!$dbc){
die('could not open a connection'.mysqli_connect_errno() . mysqli_connect_error());
}

同样,如果我用mysql替换mysqli,我会得到一个返回的dbc资源id(我认为这很好)。我想使用mysqli,因为我听到它更好/更快。现在我收到错误代码2003。

3 个答案:

答案 0 :(得分:3)

mysql_connect()mysqli_connect()使用php.ini文件中的两个不同的默认端口。我不认为这些会与标准默认值3306不同,但值得检查或尝试添加主机URL的路径。

mysqli_connect

  

mysqli mysqli_connect(... int $ port = ini_get(“ mysqli.default_port ”)...)

mysql_connect

  

如果PHP指令 mysql.default_host 未定义(默认),则默认值为“localhost:3306”。在SQL安全模式下,将忽略此参数,并始终使用值“localhost:3306”。

编辑:我错了,因为我没有阅读手册页。

<击> 我认为您的连接很好,但您不希望检查它返回的对象,如上所述。您想要使用mysqli_connect_errno()。以下是PHP.net的示例。

$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db');

if (mysqli_connect_error()) {
    die('Connect Error (' . mysqli_connect_errno() . ') '
            . mysqli_connect_error());
}
  

注意:
仅限OO语法:如果是连接   失败仍然返回一个对象。至   然后检查连接是否失败   使用mysqli_connect_error()   函数或mysqli-&gt; connect_error   如前例所示的财产。

<击> Source

答案 1 :(得分:1)

mysqli_connectmysql_connect采用不同的参数并返回不同的值。

答案 2 :(得分:0)

考虑使用

$dbc= new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);