我可以在php中混合mysql api吗?

monwx1rj  于 2021-06-15  发布在  Mysql
关注(0)|答案(4)|浏览(383)

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

jvidinwx

jvidinwx1#

从技术上讲,您可以使用任意多个独立的连接,而您的问题仅仅是由输入错误引起的—您只能使用来自一个扩展的资源和来自另一个扩展的函数,这是非常明显的。
但是,您应该避免来自同一个脚本的多个连接,无论是来自单个api还是来自不同的api。因为它会加重数据库服务器的负担并耗尽其资源。因此,尽管技术上可以,但除了短期的重构之外,不应该在代码中混合使用不同的扩展。

dohp0rv5

dohp0rv52#

不,你不能用 mysql 以及 mysqli 一起。它们是独立的api,它们创建的资源彼此不兼容。
有一个 mysqli_close 不过。

smtd7mpg

smtd7mpg3#

MySQLi 安全性要比 MySQL 但现在已经被否决了。所以你应该坚持 MySQLi 而且你不能把它们混在一起,因为它们都是不同的。

pes8fvy9

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

相关问题