我是MySQLi扩展的新手,我遇到了一个问题.每当查询完成执行时,我知道你应该释放结果.这是我为运行简单查询而构建的类的片段.有人能告诉我哪里出错了吗?正确输入后,查询将成功运行.这只是我的页面不会像它一样重新加载,但它会给我这些错误......
Fatal error: Call to a member function free() on a non-object in <file> on <line>
Run Code Online (Sandbox Code Playgroud)
......而且这个错误......
Fatal error: Call to a member function close() on a non-object in <file> on <line>
Run Code Online (Sandbox Code Playgroud)
这是我的代码的简化版本:
... More code ...
public function query($query) {
try {
if ($result = $this->connection->query($query, MYSQLI_USE_RESULT)) {
$result->free(); //Problems here
$result->close(); //Problems here
return $result;
} else {
$result->free(); //Problems here
$result->close(); //Problems here
throw new Exception("The query was invalid");
}
} catch (Exception $e) {
die($e->getMessage());
}
}
... More code ...
Run Code Online (Sandbox Code Playgroud)
我想避免使用程序样式,因为这是一个OOP应用程序.
感谢您的时间.
PS:上面的代码示例遵循与此页面上第一个示例类似的模式:http://www.php.net/manual/en/mysqli.query.php
如果我按照您的手册链接,有一些关于返回值的提及
失败时返回FALSE.对于成功的SELECT,SHOW,DESCRIBE或EXPLAIN查询,mysqli_query()将返回一个结果对象.对于其他成功的查询,mysqli_query()将返回TRUE.
特别是你不处理这两种情况true,更重要的是false
if ($result = $this->connection->query($query, MYSQLI_USE_RESULT)) {
$result->free(); // Probably call "free()" on true
$result->close();
return $result;
} else { // <-- false, null, 0 or ""
$result->free(); // Probably call "free()" on false
$result->close();
throw new Exception("The query was invalid");
}
Run Code Online (Sandbox Code Playgroud)
我不知道,$query在你的情况下是什么,但query()只返回一个结果,如果有一个(SELECT-query).