我需要在将MySQL结果存储后释放它吗?

3
我想知道在使用 $stmt->store_result() 存储结果后,是否需要调用 $stmt->free_result()?或者我只需要在最后调用 $stmt->close() ?我问这个问题的原因是因为当我调用 $stmt->num_rows 时,必须先调用 $stmt->store_result(),如此处所述:http://www.php.net/manual/en/mysqli-stmt.num-rows.php,但他们的示例中没有调用 $stmt->free_result()。然而,在 $stmt->store_result() 中他们确实这样做了:http://www.php.net/manual/en/mysqli-stmt.store-result.php
2个回答

4

你不必明确释放结果,但如果你愿意的话可以这样做。如果不这样做,当语句句柄超出范围时结果将被释放。


如果我释放结果并关闭它,会提高性能吗? - Rihards
可能不需要。关闭它实际上会自动释放结果。根据手册的说明:"mysqli_stmt_close()还会释放语句句柄。如果当前语句有未完成或未读取的结果,该函数将取消它们,以便可以执行下一个查询。"即使如此,你也不需要明确释放或关闭结果。一旦包含结果的变量超出作用域或被取消设置,语句句柄和与之相关的所有内容都会消失。 - Charles

2

PHP在释放资源方面相当宽松。脚本使用的任何资源,例如SQL连接,在脚本退出时都会被释放。虽然这是良好的编程实践,但除非您有许多并发用户,否则性能差异将非常小。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接