(PHP 4, PHP 5)
mysql_free_result — Free result memory
Description
bool mysql_free_result
( resource $result
)
mysql_free_result() will free all memory
associated with the result identifier result.
mysql_free_result() only needs to be called if
you are concerned about how much memory is being used for queries
that return large result sets. All associated result memory is
automatically freed at the end of the script's execution.
Parameters
result
The result resource that
is being evaluated. This result comes from a call to
mysql_query().
Return Values
Returns TRUE on success or FALSE on failure.
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.
Examples
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'];
?>
Notes
Note:
For backward compatibility, the following
deprecated alias may be used: mysql_freeresult()
See Also
mysql_query() - Send a MySQL query
is_resource() - Finds whether a variable is a resource
If you need to use mysql_free_result(), you may have received this error. What causes it and how can you fix it?
First, what is mysql_free_result()? When you make
mySQL database queries that return large sets of data, it can cause
your server to bog down because those results are hogging up a lot of
memory. On a high-traffic site, it can actually crash your server as
more and more of those results build up. So, mysql_free_result()
is a built-in PHP function that releases the results of your query from
memory. Again, this is usually not a big deal unless you are returning
large data sets from your queries, but it is always good practice to
clear your results and free up the memory on your server. Here is an
example of what the PHP code might look like:
//...CONNECT TO DATABASE...
$query = "SELECT * FROM employees WHERE age >= 30";
if ($result = mysql_query($query)) {
while ($row = mysql_fetch_array($result)) {
//...DO SOMETHING HERE...
}
mysql_free_result($result); //free the query results from memory
}
///...CLOSE YOUR DATABSE CONNECTION...
But, if you have strict PHP warnings enabled on your server, you may
start getting the warning above for some (but not all) of your queries.
I had a really hard time tracking this problem down, but I finally
found it here. You only use mysql_free_result()
for the following query types: SELECT, SHOW, EXPLAIN, and DESCRIBE. So,
if you perform an UPDATE query, it doesn’t return a valid resource and
throws the warning when you call mysql_free_result(). Duh.