我已经在网上搜索过,到目前为止我看到的是您可以同时使用
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...)
)
不,您不能同时使用
mysql
和mysqli
。它们是独立的 API,它们创建的资源彼此不兼容。
有一个
mysqli_close
,虽然。
从技术上讲,您可以根据需要使用任意多个单独的连接,而您的问题仅仅是错字引起的 - 您不能将一个扩展的资源与另一个扩展的功能一起使用,这很明显。
但是,您 应该避免来自同一个脚本的多个连接,无论是来自单个 API 还是不同的 API。因为它会给您的数据库服务器带来负担并耗尽其资源。所以,尽管从技术上讲你可以,但你不应该在你的代码中混合不同的扩展,除了短期的重构。
MySQLi
比 MySQL
安全得多,后者现在已被弃用。这就是为什么你应该坚持使用 MySQLi
并且你不能混合它们,因为它们是不同的。