问题:我可以在PHP中混合使用MySQL API吗?

我已经搜索过网络,到目前为止,我所看到的是可以一起使用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...))

标签:php,mysql,pdo,mysqli

回答1:

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

不过,有一个mysqli_close

回答2:

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

您不能混合使用这三种( mysql_* mysqli_* PDO )是PHP的MYSQL API一起提供的,只是不起作用。甚至在手册常见问题解答中:

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


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

回答3:

从技术上讲,您可以根据需要使用任意数量的独立连接,而问题仅是由拼写错误引起的-您不能同时使用一个扩展中的资源和另一个扩展中的功能。

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

回答4:

MySQLi比现在已不推荐使用的MySQL安全得多。这就是为什么您应该坚持使用MySQLi的原因,并且您也不能将它们混合使用,因为它们都是不同的。

回到顶部