我已经在网上搜索过了,到目前为止我所看到的是你可以使用的 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条答案
按热度按时间jvidinwx1#
从技术上讲,您可以使用任意多个独立的连接,而您的问题仅仅是由输入错误引起的—您只能使用来自一个扩展的资源和来自另一个扩展的函数,这是非常明显的。
但是,您应该避免来自同一个脚本的多个连接,无论是来自单个api还是来自不同的api。因为它会加重数据库服务器的负担并耗尽其资源。因此,尽管技术上可以,但除了短期的重构之外,不应该在代码中混合使用不同的扩展。
dohp0rv52#
不,你不能用
mysql
以及mysqli
一起。它们是独立的api,它们创建的资源彼此不兼容。有一个
mysqli_close
不过。smtd7mpg3#
MySQLi
安全性要比MySQL
但现在已经被否决了。所以你应该坚持MySQLi
而且你不能把它们混在一起,因为它们都是不同的。pes8fvy94#
在这里给出关于所有三个mysql api的一般答案,并提供一个参考:
你不能把这三种东西混在一起(
mysql_*
,mysqli_*
,PDO
)mysql api来自php,只是不起作用。甚至在手册常见问题解答中:不可能混用扩展名。因此,例如,将mysqli连接传递给pdo\umysql或ext/mysql将不起作用。
从连接到查询,您需要使用相同的mysql api及其相关函数。
http://php.net/manual/en/mysqlinfo.api.choosing.php