提问者:小点点

我可以在PHP中混合MySQLAPI吗?


我在网上搜索了一下,到目前为止我看到的是,你可以把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吗? 还是很正常? 我能检查连接是否有效吗? (如果(mysq.。。))


共3个答案

匿名用户

不,您不能一起使用mysqlmysqli。 它们是独立的API,它们创建的资源彼此不兼容。

但是有一个mysqli_close

匿名用户

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

您不能将来自PHP的三个MYSQL API(mysql_*mysqli_*pdo)中的任何一个混合在一起,它根本无法工作。 甚至在手册FAQ中也有:

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

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

  • http://php.net/manual/en/mysqlinfo.api.choosing.php

匿名用户

从技术上讲,您可以使用任意多个单独的连接,而您的问题仅仅是由一个错误造成的--您不能使用来自一个扩展的资源和来自另一个扩展的功能,这是相当明显的。

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