mysql_query() 也为 "OPTIMIZE TABLE" 语句返回资源!
(PHP 4, PHP 5)
mysql_free_result — 释放结果内存
此扩展在 PHP 5.5.0 中已弃用,并在 PHP 7.0.0 中被移除。应使用 MySQLi 或 PDO_MySQL 扩展。另请参阅 MySQL: 选择 API 指南。此函数的替代方法包括
null
的值分配给 PDO 对象,或 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() 时获取剩余的数据。
因此,只有在您获取所有数据(并且需要它)时才使用非缓冲查询。