PHP の mysqli_query パラメータ MYSQLI_STORE_RESULT と MYSQLI_USE_RESULT の違い、_PHP チュートリアル

WBOY
リリース: 2016-07-13 10:17:55
オリジナル
856 人が閲覧しました

PHP の mysqli_query パラメータ MYSQLI_STORE_RESULT と MYSQLI_USE_RESULT の違い、

nosqlが普及してきましたが、まだまだSQLが主流な気がします
今日phpマニュアルを閲覧していたら、mysqliクエリが興味深いパラメータを渡すことができることを発見しました

コードをコピーします コードは次のとおりです:

@mysqli_query($this->sql,$SQL,($method ? MYSQLI_USE_RESULT : MYSQLI_STORE_RESULT));

これら 2 つのパラメータは、PHP マニュアルで次のように説明されています。

コードをコピーします コードは次のとおりです:

必要な動作に応じて定数 MYSQLI_USE_RESULT または MYSQLI_STORE_RESULT が使用されます。 デフォルトでは、MYSQLI_STORE_RESULT が使用されます。
何も渡されない場合、デフォルトは MYSQLI_STORE_RESULT になります。

誰かが phpmanul でこれを言いました: 大量のデータを取得する必要がある場合は、MYSQLI_USE_RESULT を使用します


実際、これら 2 つのパラメータの差は依然として非常に大きいです。

(1) 違いは、サーバーから結果セットの行を取得する点です。

(2) MYSQLI_USE_RESULT はクエリを開始しますが、実際には行を取得しません
(3) MYSQLI_STORE_RESULT はすべての行を即座に取得します
(4) MYSQLI_STORE_RESULT がサーバーから結果セットを取得すると、行が抽出され、それらにメモリが割り当てられ、クライアントに格納されます。その後、mysqli_fetch_array() を呼び出しても、データ構造が切り離されるだけなので、エラーは返されません。 mysqli_fetch_array() による NULL の戻りは、結果セットの最後に到達したことを常に示します。
(5) MYSQLI_USE_RESULT 自体は行を取得せず、行ごとの取得を開始するだけです。つまり、行ごとに mysqli_fetch_array() を呼び出して完了する必要があります。そのため、通常の状況では、mysqli_fetch_array() が NULL を返す場合でも、結果セットの最後に到達したことを示しますが、サーバーとの通信中にエラーが発生したことを示す場合もあります。

概要

MYSQLI_USE_RESULT と比較すると、MYSQLI_STORE_RESULT はより多くのメモリと処理要件を必要とします。結果セット全体がクライアント上で保持されるため、一度に複数の行を取得する場合、メモリ割り当てとデータ構造の作成のコストが非常に大きくなります。 MYSQLI_USE_RESULT を使用できます。

MYSQLI_USE_RESULT は、毎回処理される 1 行に十分なスペースのみが割り当てられるため、メモリ要件が低くなります。これは、結果セット用の複雑なデータ構造を作成する必要がないため、高速になります。一方、MYSQLI_USE_RESULT はサーバーに大きな負荷をかけるため、クライアントがすべての行を取得するのに適していると思われるまで、結果セット内の行を保持する必要があります。


http://www.bkjia.com/PHPjc/887353.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/887353.html技術記事 PHP の mysqli_query パラメータ MYSQLI_STORE_RESULT と MYSQLI_USE_RESULT の違い nosql が普及してきましたが、まだまだ SQL が主流な気がする今日、php manul を閲覧していたら、mysqli を発見しました...
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート