0

後にメモリを解放するためのmysqliクラスのメソッドがあるかどうか疑問に思っていget_result()ました。人々がcloseCursor()メソッドを使用しているのを見ましたが、コンパイラは次のように述べています。

Call to undefined method mysqli_stmt::closeCursor()

そして、私はこのように準備されたステートメントオブジェクトを通してそれを呼び出します$Statement->closeCursor();

closeCursorメソッドがデータベースへの接続も閉じることを確認しました。つまり、別のクエリを実行する場合は、mysqliクラスを再度インスタンス化する必要がありますか?もしそうなら、私が同じことをすることができるが、開いた接続を残す他の方法はありますか?result_setsが残すすべての変数を解放し、通常どおり別のクエリを開始することにのみ関心があります。ありがとうございます。

ちなみに、私は今作っているカスタムmysqlバックアップシステムのためにこれを行っています、乾杯!-エドガー。

4

2 に答える 2

3

closeCursor()mysqliステートメントメソッドではありません。

あなたが探しているのはfree_resultfreeです

于 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 に答える