この記事では、主に PHP の mysqli_query パラメーター MYSQLI_STORE_RESULT と MYSQLI_USE_RESULT の違いを 5 つ紹介しますので、必要な方は参考にしてください
nosql が普及してきましたが、依然として SQL が主流であると感じます。今日php manulを閲覧していて、mysqliクエリが興味深いパラメータを渡すことができることを発見しました
@mysqli_query($this->sql,$SQL,($method ? MYSQLI_USE_RESULT : MYSQLI_STORE_RESULT));これら2つのパラメータはphp manulで次のように説明されています。
Either the constant MYSQLI_USE_RESULT or MYSQLI_STORE_RESULT depending on the desired behavior. By default, MYSQLI_STORE_RESULT is used.何も渡されない場合、デフォルトは MYSQLI_STORE_RESULT になります。 誰かが phpmanul でこう言いました: 大量のデータを取得する必要がある場合は、MYSQLI_USE_RESULT を使用します実際、これら 2 つのパラメータの違いは依然として非常に大きいです。 (1) 違いは、サーバーから結果セットの行を取得する点です。
(2) MYSQLI_USE_RESULT はクエリを開始しますが、実際には行をフェッチしません
(3) MYSQLI_STORE_RESULT はすぐにすべての行を取得します
(4) MYSQLI_STORE_RESULT 結果セットがサーバーから取得されると、行が抽出され、それらの行にメモリが割り当てられます, クライアントに保存されているため、mysqli_fetch_array() への以降の呼び出しでは、結果セットを既に保持しているデータ構造から行を削除するだけなので、エラーが返されることはありません。NULL を返す Mysqli_fetch_array() は、常に結果セットの終わりを示します。に達しました。
(5) MYSQLI_USE_RESULT 自体は行を取得せず、行ごとの取得を開始するだけです。つまり、行ごとに mysqli_fetch_array() を呼び出して完了する必要があります。そのため、通常の状況では、mysqli_fetch_array() が NULL を返す場合でも、結果セットの最後に到達したことを示しますが、サーバーとの通信中にエラーが発生したことを示す場合もあります。