簡體   English   中英

我可以在 PHP 中混合 MySQL API 嗎?

[英]Can I mix MySQL APIs in PHP?

我已經搜索了網絡,到目前為止我所看到的是您可以同時使用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

只是在這里給出一個關於所有三個 MYSQL API 的一般性答案,並提供參考:

您不能將 PHP 中的三個( mysql_*mysqli_*PDO )MYSQL API 中的任何一個混合在一起,它只是不起作用。 它甚至在手冊常見問題解答中:

不能混合擴展名 因此,例如,將 mysqli 連接傳遞給 PDO_MySQL 或 ext/mysql將不起作用


從連接到查詢,您需要使用相同的 MySQL API 及其相關功能。

從技術上講,您可以根據需要使用任意數量的單獨連接,而您的問題僅僅是由拼寫錯誤引起的 - 您不能將一個擴展的資源與另一個擴展的功能一起使用,這很明顯。

但是,您應該避免來自同一個腳本的多個連接,無論是來自單個 API 還是不同的 API。 因為它會給您的數據庫服務器帶來負擔並耗盡其資源。 因此,盡管從技術上講你可以,但你不應該在你的代碼中混合不同的擴展,除非是為了短期的重構。

MySQLi比現在已棄用的MySQL安全得多。 這就是為什么你應該堅持使用MySQLi並且你不能混合它們,因為它們都是不同的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM