我可以在PHP中混合使用MySQL API吗?

我可以在PHP中混合使用MySQL API吗?,php,mysql,pdo,mysqli,Php,Mysql,Pdo,Mysqli,我已经在网上搜索过了,到目前为止,我看到的是,你可以一起使用mysql\u和mysqli\u,意思是: <?php $con=mysqli_connect("localhost", "root" ,"" ,"mysql"); if( mysqli_connect_errno( $con ) ) { echo "failed to connect"; }else{ echo "connected"; } mysql_close($con); echo "Done"; ?&g

我已经在网上搜索过了,到目前为止,我看到的是,你可以一起使用
mysql\u
mysqli\u
,意思是:

<?php
$con=mysqli_connect("localhost", "root" ,"" ,"mysql");

if( mysqli_connect_errno( $con ) ) {
    echo "failed to connect";
}else{
    echo "connected";
}
mysql_close($con);
echo "Done";
?>
对于第一个和相同的,除了使用
mysqli\u close()
。第二个


有什么问题?我不能同时使用mysql和mysqli吗?还是正常?这是我检查连接是否有效的方法吗?(如果(mysq…)

否,您不能同时使用
mysql
mysqli
。它们是独立的API,它们创建的资源彼此不兼容


但是有一个
mysqli\u关闭

不,您不能同时使用
mysql
mysqli
。它们是独立的API,它们创建的资源彼此不兼容


不过,还有一个
mysqli\u close

mysqli
比现在被弃用的
MySQL
安全得多。这就是为什么你应该坚持使用
MySQLi
,也不能混用它们,因为它们是不同的。
MySQLi
MySQL
安全得多,后者现在已经被弃用了。这就是为什么您应该坚持使用
MySQLi
,并且不能将它们混合使用,因为它们是不同的。

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

您不能将PHP中的三个(,)MYSQL API中的任何一个混合在一起,它就是不起作用。甚至在:

不可能混合使用扩展名。因此,例如,将mysqli连接传递到PDO_MySQL或ext/MySQL将不起作用


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


这里仅给出关于所有三个MYSQL API的一般答案,并提供参考:

您不能将PHP中的三个(,)MYSQL API中的任何一个混合在一起,它就是不起作用。甚至在:

不可能混合使用扩展名。因此,例如,将mysqli连接传递到PDO_MySQL或ext/MySQL将不起作用


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


从技术上讲,您可以使用任意多个独立的连接,而您的问题仅仅是由输入错误造成的-您只能将一个扩展的资源与另一个扩展的功能结合使用,这一点非常明显


但是,您应该避免来自同一脚本的多个连接,无论是来自单个API还是不同的API。因为这将加重数据库服务器的负担并耗尽其资源。因此,虽然技术上可以,但除了短期的重构外,不应该在代码中混合使用不同的扩展。

技术上,您可以使用任意多个独立的连接,而问题仅仅是由输入错误造成的-您只能使用一个扩展中的资源和另一个扩展中的函数,这很明显


但是,您应该避免来自同一脚本的多个连接,无论是来自单个API还是不同的API。因为这将加重数据库服务器的负担并耗尽其资源。因此,虽然技术上可以,但除了短期的重构外,不应该在代码中混合使用不同的扩展。

mysql已被弃用,它们不能一起工作才有意义。你为什么要这么做呢?你应该避免使用
mysql.*
函数。它们容易出错且不安全,很快就会从PHP中删除(目前它们被标记为已弃用)。[这个很好的答案][0]更详细地解释了它们为什么不好。[0]:1)你坚持使用一个旧的劣质接口(mysql),该接口从亿万年以来就在文档中被标记为过时2)出于某种奇怪的原因,你想将其与后续接口混合使用,而不是做正确的事情并转换为新接口3)你非常惊讶它不起作用,以至于你问了这么多,虽然很明显你所做的是胡说八道,但这不是迷信。当然,您可以使用
mysqli.*
函数编写坏代码,使用
mysql.*
函数编写好代码。但后一类被标记为已弃用,因为它是一组较低级的函数,无法支持OO风格的调用,甚至无法支持准备好的语句(仅举两个例子)。如果有两种工具可以选择做同样的工作,其中一种从长远来看显然更好,而且更灵活,那么正确的答案不是显而易见的吗?当然不是。但是,如果您可以在不推荐使用的功能和积极支持的功能之间进行选择(例如,滚动您自己的抽象),那么为什么要使用旧功能呢?mysql不推荐使用,它们不能一起工作才有意义。你为什么要这么做呢?你应该避免使用
mysql.*
函数。它们容易出错且不安全,很快就会从PHP中删除(目前它们被标记为已弃用)。[这个很好的答案][0]更详细地解释了它们为什么不好。[0]:1)你坚持使用一个旧的劣质接口(mysql),该接口从亿万年以来就在文档中被标记为过时2)出于某种奇怪的原因,你想将其与后续接口混合使用,而不是做正确的事情并转换为新接口3)你非常惊讶它不起作用,以至于你问了这么多,虽然很明显你所做的是胡说八道,但这不是迷信。当然,您可以使用
mysqli.*
函数编写坏代码,使用
mysql.*
函数编写好代码。但后一类被标记为已弃用,因为它是一组较低级的函数,无法支持OO风格的调用,甚至无法支持准备好的语句(仅举两个例子)。有两种工具可供选择来完成相同的工作,其中一种在l
<?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