我可以在PHP中混合使用MySQL API吗?
我search了networking,到目前为止我所看到的是,你可以使用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,它们创build的资源互不兼容。
虽然有一个mysqli_close
。
只是在这里给出一个普遍的答案关于所有三个MYSQL API的引用:
你不能将PHP的三个( mysql_*
, mysqli_*
, PDO
)MYSQL API中的任何一个混合在一起,这是行不通的。 甚至在手册FAQ中 :
不能混合扩展名 。 所以,例如,传递一个mysqli连接到PDO_MySQL或ext / mysql 将不起作用 。
你需要使用相同的MySQL API及其相关的function,从连接到查询。
从技术上讲,你可以根据需要使用尽可能多的单独连接,而你的问题是由单纯的打字错误引起的 – 你只能使用一个扩展的资源和另一个扩展的function,这很明显。
但是,您应该避免来自同一个脚本的多个连接 ,无论是单个API还是不同的连接。 因为这会加重数据库服务器的负担并耗尽资源。 所以,虽然技术上你可以,但是你不应该在你的代码中混合不同的扩展,除了重构的短期。
在我的身边,我认为你可以,但你将不得不作出连接的文件
数据库,因为mysqli_*
只会采取mysqli_connect
所以与mysql_*
你可能想尝试学习更好的PDO
MySQLi
比MySQL
现在要安全得多。 这就是为什么你应该坚持与MySQLi
,也不能混合他们,因为他们是不同的。 如果你想转换成MySQLi
你可以在MySQL
网站find一个转换器。