(PHP 5, PHP 7, PHP 8)
mysqli::store_result -- mysqli_store_result — 直近のクエリから結果セットを転送する
link
手続き型のみ: mysqli_connect() あるいは mysqli_init() が返す mysqliオブジェクト。
mode
指定したいオプション。以下のいずれかの値を指定します。
名前 | 説明 |
---|---|
MYSQLI_STORE_RESULT_COPY_DATA |
結果を、内部の mysqlnd バッファーから PHP の変数にコピーします。 デフォルトでは、mysqlnd は参照を利用しており、メモリ内の結果をコピーしたり複製したりしないようにしています。 ある種の結果セット (短めの行を大量に保持する結果セットなど) の場合は、 コピーしたほうが、全体的なメモリ使用量を抑えることができます。 結果を保持する PHP の変数のほうが、解放されるのが早いからです。 これは mysqlnd でのみ利用可能です。 |
バッファに格納した結果オブジェクトを返します。エラー時には false
を返します。
注意:
mysqli_store_result() は、クエリが結果セットを 返さなかった場合(例えば、クエリが INSERT 文であった場合)に
false
を返します。また、結果セットの読み込みに失敗した場合にもfalse
を返します。エラーが発生したかどうかを調べるには、 mysqli_error() が空文字列以外を返す・ mysqli_errno() がゼロ以外の値を返す・あるいは mysqli_field_count() がゼロ以外の値を返す のいずれかを確認します。それ以外にこの関数がfalse
を返す理由としては mysqli_query() のコールに成功して返された 結果セットが大きすぎる(メモリに割り当てられない)場合がありえます。 もし mysqli_field_count() がゼロ以外の値を 返した場合、文は空でない結果セットを生成しています。
mysqli_multi_query() を参照ください。
注意:
クエリ結果が使用するメモリを mysqli_free_result() 関数で開放するのは、どんな場合でも大切です。しかし、大きい結果セットを mysqli_store_result() で転送した際は、特にこれが 重要となります。