如果您使用未緩衝的查詢,而且尚未從 MySQL 取得所有資料,這個函式可能會增加記憶體用量。在這種情況下,MySQL API 會出現一個問題:您想釋放結果,但不想關閉連線。現在,MySQL 只會在所有資料都已取得後才接受另一個查詢,因此 API 現在必須在呼叫 mysql_free_result() 時取得其餘的資料。
因此,只有在您取得所有資料(並且需要它)時才使用未緩衝的查詢。
(PHP 4, PHP 5)
mysql_free_result — 釋放結果記憶體
此擴充自 PHP 5.5.0 起已被棄用,並在 PHP 7.0.0 中移除。應改用 MySQLi 或 PDO_MySQL 擴充。另請參閱 MySQL:選擇 API 指南。此函式的替代方案包括:
null
,或使用 PDOStatement::closeCursor()
mysql_free_result() 會釋放與結果識別碼 result
相關聯的所有記憶體。
只有在您擔心傳回大型結果集的查詢使用了多少記憶體時,才需要呼叫 mysql_free_result()。所有相關的結果記憶體會在腳本執行結束時自動釋放。
如果對 result
使用非資源,則會發出 E_WARNING 等級的錯誤。值得注意的是,mysql_query() 只會針對 SELECT、SHOW、EXPLAIN 和 DESCRIBE 查詢返回 資源。
範例 #1 mysql_free_result() 範例
<?php
$result = mysql_query("SELECT id,email FROM people WHERE id = '42'");
if (!$result) {
echo '無法執行查詢:' . mysql_error();
exit;
}
/* 使用結果,假設之後我們就不需要它了 */
$row = mysql_fetch_assoc($result);
/* 現在我們釋放結果並繼續執行我們的腳本 */
mysql_free_result($result);
echo $row['id'];
echo $row['email'];
?>
注意:
為了向後相容,可以使用以下已棄用的別名:mysql_freeresult()
如果您使用未緩衝的查詢,而且尚未從 MySQL 取得所有資料,這個函式可能會增加記憶體用量。在這種情況下,MySQL API 會出現一個問題:您想釋放結果,但不想關閉連線。現在,MySQL 只會在所有資料都已取得後才接受另一個查詢,因此 API 現在必須在呼叫 mysql_free_result() 時取得其餘的資料。
因此,只有在您取得所有資料(並且需要它)時才使用未緩衝的查詢。