我在网上搜索了一下,到目前为止我看到的是,你可以把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.。。)
)
不,您不能一起使用mysql
和mysqli
。 它们是独立的API,它们创建的资源彼此不兼容。
但是有一个mysqli_close
。
在这里,我只想给出一个关于所有三个MYSQL API的一般性答案,并提供一个参考:
您不能将来自PHP的三个MYSQL API(mysql_*
,mysqli_*
,pdo
)中的任何一个混合在一起,它根本无法工作。 甚至在手册FAQ中也有:
不能混合扩展名。 因此,例如,将mysqli连接传递到PDO_MySQL或ext/mysql将不起作用。
您需要使用相同的MySQL API及其相关功能,从连接到查询。
从技术上讲,您可以使用任意多个单独的连接,而您的问题仅仅是由一个错误造成的--您不能使用来自一个扩展的资源和来自另一个扩展的功能,这是相当明显的。
但是,您应该避免来自同一个脚本的多个连接,不管是来自单个API还是不同的API。 因为这将增加数据库服务器的负担并耗尽其资源。 因此,尽管在技术上可以,但您不应该在代码中混合不同的扩展,除非是短期的重构。