2012-12-23 56 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); 
?> 

希望這有助於