我可以在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...)


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

mysqli_close ,有一个mysqli_close


在这里给出一个关于所有三个MYSQL API的一般答案,并附带一个参考:

你不能将PHP的三个( mysql_*mysqli_*PDO )MYSQL API中的任何一个混合在一起,但它不起作用。 甚至在手册FAQ中也是如此:

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


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

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

  • 从技术上讲,您可以根据需要使用尽可能多的单独连接,而您的问题只是由于单纯的拼写错误造成的 - 您只能使用另一个扩展的资源与另一个扩展的资源,这很明显。

    但是,您应该避免来自同一个脚本的多个连接 ,无论是来自单个API还是不同的连接。 因为它会给你的数据库服务器造成负担并耗尽资源。 所以,虽然技术上你可以,但是你不应该在你的代码中混合不同的扩展,除了短时间的重构。

    链接地址: http://www.djcxy.com/p/69421.html

    上一篇: Can I mix MySQL APIs in PHP?

    下一篇: PHP DateTime: Failed to parse time string