我想知道在get_result()
之后是否有来自mysqli类的任何可用内存的方法,我看到人们使用closeCursor()
方法,但编译器说:
Call to undefined method mysqli_stmt::closeCursor()
我通过我准备好的语句对象来调用它,如$Statement->closeCursor();
我看到closeCursor方法也关闭了与数据库的连接,所以它是否意味着如果我想进行另一个查询,我需要再次重新实例化mysqli类?如果是这样的话,还有其他方法我可以做同样但留下一个打开的连接?我只对free_sets离开并释放另一个查询的所有变量感兴趣,谢谢!
顺便说一下,我正在为自定义的mysql备份系统做这个,欢呼! - 埃德加。
答案 0 :(得分:3)
closeCursor()
不是mysqli语句方法。
您要找的是free_result和free
答案 1 :(得分:1)
我可以找到closeCursor的替代品,使用它可以释放结果,而不用关闭连接。 (此片段在评论部分的手册中发布)
<?php
/**
* @param PDOStatement $oStm
*/
public static function closeCursor($oStm) {
do $oStm->fetchAll();
while ($oStm->nextRowSet());
}
?>
来自PHP手册PDOStatement::closeCursor
根据手册那里
PDOStatement :: closeCursor()既可以作为可选的驱动程序特定方法(允许最大效率)实现,也可以作为通用PDO后备(如果未安装驱动程序特定功能)实现。 PDO通用回退在语义上与在PHP脚本中编写以下代码相同:
<?php
do {
while ($stmt->fetch())
;
if (!$stmt->nextRowset())
break;
} while (true);
?>
希望这有帮助