(PHP 5, PHP 7, PHP 8)
mysqli_stmt::store_result -- mysqli_stmt_store_result — 内部バッファに結果を保存する
オブジェクト指向型
手続き型
有効な結果セットを生成するクエリの場合(SELECT, SHOW, DESCRIBE,
EXPLAIN
)、かつ
完全な結果セットをバッファリングする必要がある場合のみ、
この関数をコールすべきです。
バッファリングされたデータを取得するには続けて
mysqli_stmt_fetch() をコールします。
注意:
その他のクエリでは mysqli_stmt_store_result() をコールする必要はありません。しかし、もしコールしてしまったとしても パフォーマンスへの悪影響は一切ありません。クエリが結果セットを 返すかどうかは、mysqli_stmt_result_metadata() が
false
を返すかどうかで調べられます。
成功した場合に true
を、失敗した場合に false
を返します。
例1 オブジェクト指向型
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
$query = "SELECT Name, CountryCode FROM City ORDER BY Name LIMIT 20";
$stmt = $mysqli->prepare($query);
$stmt->execute();
/* 結果を内部バッファに保存します */
$stmt->store_result();
printf("Number of rows: %d.\n", $stmt->num_rows);
例2 手続き型
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
$query = "SELECT Name, CountryCode FROM City ORDER BY Name LIMIT 20";
$stmt = mysqli_prepare($link, $query);
mysqli_stmt_execute($stmt);
/* 結果を内部バッファに保存します */
mysqli_stmt_store_result($stmt);
printf("Number of rows: %d.\n", mysqli_stmt_num_rows($stmt));
上の例の出力は以下となります。
Number of rows: 20.