2012-12-23 35 views
0

我在想,如果有一个从可用内存和mysqli类中的任何方法get_result()后,我发现人们使用closeCursor()方法,但是编译器说:PHP可用内存通过PDO

Call to undefined method mysqli_stmt::closeCursor() 

,我把它通过我准备好的声明对象是这样的$Statement->closeCursor();

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

顺便说一句,我这样做了定制的MySQL备份系统,我只是做,干杯! - 埃德加。

+4

PDO没有什么关系的MySQLi。你在用哪个? – Brad

+0

'unset($ pdoHandle)'? –

+0

在没有任何答案之前,我很抱歉,我正在使用MySQLi,(我总是通过PDO = Prepared Object),firstable创建一个mysqli实例,然后使用stmt_init方法创建语句对象。 – Neo

回答

3

closeCursor()不是mysqli的声明方法。

你在找什么是free_resultfree

+0

好的我没有看到@Neo以错误的方式调用closeCursor,它应该像这样PDostatement :: closeCursor()。相反,他已发布为mysqli静态方法。 –

+0

所有我只需要,下次我必须很好地阅读手册之前问大声笑,顺便谢谢大家回答! – Neo

+0

没有什么错@ neo的,它确实有助于其他SO游客 –

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); 
?> 

希望这有助于