113

我已经在网上搜索过,到目前为止我所看到的是您可以使用mysql_mysqli_一起表示:

<?php
$con=mysqli_connect("localhost", "root" ,"" ,"mysql");

if( mysqli_connect_errno( $con ) ) {
    echo "failed to connect";
}else{
    echo "connected";
}
mysql_close($con);
echo "Done";
?>

或者

<?php
$con=mysql_connect("localhost", "root" ,"" ,"mysql");
if( mysqli_connect_errno( $con ) ) {
    echo "failed to connect";
}else{
    echo "connected";
}
mysqli_close($con);
echo "Done";
?>

是有效的,但是当我使用此代码时,我得到的是:

Connected
Warning: mysql_close() expects parameter 1 to be resource, object given in D:\************.php on line 9
Done

对于第一个和相同的,除了mysqli_close()。对于第二个。

问题是什么?我不能mysql_mysqli一起使用吗?还是正常?我可以检查连接是否有效吗?( if(mysq...))

4

4 回答 4

71

不,你不能同时使用mysqlmysqli。它们是独立的 API,它们创建的资源彼此不兼容。

不过,有一个mysqli_close

于 2013-07-05T23:53:05.310 回答
16

只是在这里给出一个关于所有三个 MYSQL API 的一般性答案,并提供参考:

您不能将 PHP 中的三个 ( mysql_*, mysqli_*, PDO) MYSQL API 中的任何一个混合在一起,它就是行不通。它甚至在手册常见问题解答中:

不能混合扩展名。因此,例如,将 mysqli 连接传递给 PDO_MySQL 或 ext/mysql将不起作用


从连接到查询,您需要使用相同的 MySQL API 及其相关功能。

于 2015-07-09T13:59:15.307 回答
2

从技术上讲,您可以根据需要使用任意数量的单独连接,而您的问题仅仅是由拼写错误引起的——您不能将一个扩展的资源与另一个扩展的功能一起使用,这很明显。

但是,您应该避免来自同一个脚本的多个连接,无论是来自单个 API 还是不同的 API。因为它会给您的数据库服务器带来负担并耗尽其资源。因此,尽管从技术上讲你可以,但你不应该在你的代码中混合不同的扩展,除了短期的重构。

于 2015-07-09T14:08:54.347 回答
-3

MySQLiMySQL现在已弃用的安全得多。这就是为什么你应该坚持MySQLi并且你不能混合它们,因为它们都是不同的。

于 2013-07-05T23:55:38.793 回答