我有连接到数据库的代码,如下所示:

$db = new mysqli("localhost", "user", "pass", "company");

现在,当我像这样查询数据库时:
//query calls to a stored procedure 'user_info'
$result = $db->query("CALL user_info('$instruc', 'c_register', '$eml', '$pass', '')");
if($result->fetch_array())
{
   //use the results
}
$result->close();

$result = $db->query("CALL user_info('$instruc', 's_login', '$eml', '$pass', '')");
if($result->fetch_array())
{
   //use the results
}
$result->close();

我在第一个$result->close();
致命错误:对中的非对象调用成员函数fetch_array()。。。
为了运行另一个查询,我必须关闭db连接并再次连接,然后它才能工作。我想知道是否有一种方法可以运行另一个查询,而不必断开连接并重新连接到数据库。
提前谢谢。

最佳答案

free()删除与结果集相关的所有存储数据,但它不会取消$result对象本身的设置,因此仍然设置$result是完全可以的。
不过,您仍然可以使用$db对象启动新查询。释放结果集不应影响数据库对象本身。
能否显示在对结果对象运行free()后失败的查询的完整代码以及它返回的错误?

关于php - 我的mysqli free()成员函数有问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2797477/

10-09 23:57
查看更多