mysql_free_result

(PHP 4, PHP 5)

mysql_free_result释放结果内存

说明

bool mysql_free_result ( resource $result )

mysql_free_result() 将释放所有与结果标识符 result 所关联的内存。

mysql_free_result() 仅需要在考虑到返回很大的结果集时会占用多少内存时调用。在脚本结束后所有关联的内存都会被自动释放。

成功时返回 TRUE, 或者在失败时返回 FALSE

为向下兼容仍然可以使用 mysql_freeresult(),但反对这样做。

参数

result

resource 型的结果集。此结果集来自对 mysql_query() 的调用。

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE

If a non-resource is used for the result, an error of level E_WARNING will be emitted. It's worth noting that mysql_query() only returns a resource for SELECT, SHOW, EXPLAIN, and DESCRIBE queries.

范例

Example #1 A mysql_free_result() example

<?php
$result 
mysql_query("SELECT id,email FROM people WHERE id = '42'");
if (!
$result) {
    echo 
'Could not run query: ' mysql_error();
    exit;
}
/* Use the result, assuming we're done with it afterwards */
$row mysql_fetch_assoc($result);

/* Now we free up the result and continue on with our script */
mysql_free_result($result);

echo 
$row['id'];
echo 
$row['email'];
?>

注释

Note:

为了向下兼容,可以使用下列已废弃的别名: mysql_freeresult()

参见

add a note add a note

User Contributed Notes 7 notes

up
7
webmaster at bluesting dot co dot za
3 years ago
mysql_query() also returns a resource for "OPTIMIZE TABLE" statements!
up
2
Anonymous
8 years ago
If you're seeing warnings like "Warning: Unknown: 6 result set(s) not freed. Use mysql_free_result to free result sets which were requested using mysql_query() in Unknown on line 0" and want to turn them off, set mysql.trace_mode = Off in your php.ini
up
-1
webmaster at wforums dot net
6 years ago
I agree with Joachim Kruyswijk (posted on 14-Jun-2005 11:42). I just did the test on my beta version of my new site (who needs to get dynamically news and user login from a database) and i use 1000kb less memory when i do not use mysql_free_result. I guess it is because the data it needs to load are not that large (for news: date, short description and for the user login: username, password). It may only be in the user control panel that it will be more, but since that isn't developed totally yet, i'll have to test :p
up
-2
admin at ifyouwantblood dot de
6 years ago
yes this function may increase the memory usage if you use unbuffered querys and if you have not fetched all the data from mysql. in this case the mysql api has a problem: you want to free the result but do not want to close the connection. now mysql will only accept another query if all data has been fetched, so the api now must fetch the rest of the data when calling mysql_free_result().

so only use unbuffered querys if you fetch all the data (and need it).
up
-2
Joachim Kruyswijk
9 years ago
Using this function may actually increase the amount of memory used. In my case, the script used 208 bytes less memory when *not* using mysql_free_result().
Check for yourself: call memory_get_usage() at the end of the script.
up
-5
macronesia at macronesia dot net
9 years ago
You not need to use this if you are using PHP 4.

The comment below this comment may explain why it's actually costing more memory.
up
-6
mdeininger at jyujin dot de
9 years ago
yes, i encountered that too. as far as i could tell, that's because the script is stored in memory after being compiled and that's as much more memory as it needs for a call to that function.

if you always get lotsa data in your results, using this function will decrease memory usage tho, unless you use non-buffered queries (which are preferable unless you absolutely *have* to use mysql_seek(), or you need to do another query while the last one hasn't finished reporting back, as they can provide a small speedup)
To Top