我需要检查mysqli_result是否已被释放。
使用Ext/Mysql函数,您可以使用函数is_resource
执行此操作我试过检查$ result是否为mysqli_result,但是被释放后$ result仍然是mysqli_result对象
$db = mysqli_connect("myhost", "myuser", "mypass", "mydb");
$result = $db->query("SELECT * FROM mytable");
$result->free();
var_dump(is_a($result, "mysqli_result")); // => true, it is even if freed
答案 0 :(得分:1)
释放mysqli_result后,其num_rows
属性ist设置为NULL。
如果您选中它,php会发出警告
PHP警告:无法获取mysqli_result
由于您知道这不是错误,因此可以使用@
忽略它。
function isFreed(mysqli_result $result) {
return @($result->num_rows === NULL);
}
答案 1 :(得分:0)
不能将它包装在某个函数或方法中吗?
Class Result
{
private $result;
public function __construct(mysqli_result $result) {
$this->result = $result;
}
public function getResult() {
return $this->result;
}
public function free() {
$this->result->free();
$this->result = null;
}
public function __destruct() {
$this->free();
}
}
答案 2 :(得分:-1)
如果是
的结果,您可以检查$result->free()
返回true,因为如果它返回false,则失败。
这对于检查是否足够?