PHP Conference Japan 2024

mysql_close

(PHP 4, PHP 5)

mysql_close關閉 MySQL 連線

警告

此擴充自 PHP 5.5.0 起已棄用,並在 PHP 7.0.0 中移除。建議改用 MySQLiPDO_MySQL 擴充。另請參閱 MySQL:選擇 API 指南。此函式的替代方案包括:

說明

mysql_close(資源 $link_identifier = NULL): 布林值

mysql_close() 會關閉與指定連結識別碼相關聯的非永久 MySQL 伺服器連線。如果未指定 link_identifier,則會使用最後開啟的連結。

當 PHP 腳本執行完成時,開啟的非永久 MySQL 連線和結果集會自動銷毀。因此,雖然明確關閉開啟的連線和釋放結果集是可選的,但建議這樣做。這將立即將資源返還給 PHP 和 MySQL,從而提高效能。相關資訊,請參閱 釋放資源

參數

link_identifier

MySQL 連線。如果未指定連結識別碼,則會假設為 mysql_connect() 最後開啟的連結。如果找不到或建立連線,則會產生 E_WARNING 等級的錯誤。

傳回值

成功時傳回 true,失敗時傳回 false

範例

範例 #1 mysql_close() 範例

<?php
$link
= mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!
$link) {
die(
'無法連線:' . mysql_error());
}
echo
'連線成功';
mysql_close($link);
?>

以上範例會輸出

Connected successfully

注意事項

注意:

mysql_close() 不會關閉由 mysql_pconnect() 建立的永久連結。更多詳細資訊,請參閱關於 永久連線 的手冊頁面。

參見

新增註釋

使用者貢獻的註釋 2 則註釋

bbodelcampo at yahoo dot co dot uk
18 年前
關於同時連線到不同主機的一些注意事項...

我在一個主要從一個資料庫提取內容的網站上工作,但使用外國伺服器上的資料庫來驗證授權。人們可能會期望以下程式碼可以正常運作

<?php
// 開啟與主要資料庫的連線
$res1 = mysql_connect($host1, $user1, $pass1);
mysql_select_db($db1);

// 開啟與授權伺服器的連線
$res2 = mysql_connect($host2, $user2, $pass2);
mysql_select_db($db2, $res2);

// 提取授權資料並在完成後關閉連線
mysql_query($check_sql, $res2);
// ...
mysql_close($res2);

// 現在從主要資料庫提取內容
// 未指定資源應預設為最後開啟的資料庫
mysql_query($query);
// ...
?>

結果發現最後這個查詢,因為找不到有效的連線,會嘗試使用沒有參數的 mysql_connect() 進行連線。但如果改用 mysql_query($query, $res1),或者再次執行這個主機的 mysql_connect,則可以正常運作。因此,似乎不可能讓程式碼中包含一個涵蓋全局的資料庫連線,同時穿插著與另一個主機/資料庫的臨時連線....
mdes[SPAM]saintes at gmail dot com
14 年前
我剛遇到一個 Apache 的問題。

它當機並顯示

「父進程:子進程以狀態碼 3221225477 退出 -- 重新啟動。」

錯誤來自 php_mysql.dll 擴充套件

我不明白當機的原因為何..

然後,我除錯了我下載的腳本,發現是 mysql_close() 函式造成的問題。

解決方案是,將連結識別碼傳遞給它,雖然在說明中是可選的,但沒有它會導致當機且沒有任何說明。

感謝 agneady。
To Top