0

我想知道 mysqli 类中是否有任何方法可以在 a 之后释放内存get_result(),我看到人们使用closeCursor()方法,但编译器说:

Call to undefined method mysqli_stmt::closeCursor()

我通过我准备好的语句对象这样调用它$Statement->closeCursor();

我看到 closeCursor 方法也关闭了与数据库的连接,这是否意味着如果我想进行另一个查询,我需要再次重新实例化 mysqli 类?如果是这样,有没有其他方法可以做同样的事情,但留下一个打开的连接?我只对释放 result_sets 留下的所有变量并正常启动另一个查询感兴趣,谢谢!

顺便说一句,我正在为我正在制作的自定义 mysql 备份系统做这个,干杯!- 埃德加。

4

2 回答 2

3

closeCursor()不是 mysqli 语句方法。

您正在寻找的是free_result免费

于 2012-12-23T04:52:15.057 回答
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);
?>

希望这可以帮助

于 2012-12-23T04:51:47.923 回答