(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
を返すかどうかで調べられます。
stmt
手続き型のみ: mysqli_stmt_init() が返す mysqli_stmt オブジェクト。
mysqli のエラー報告 (MYSQLI_REPORT_ERROR
) が有効になっており、かつ要求された操作が失敗した場合は、警告が発生します。さらに、エラー報告のモードが MYSQLI_REPORT_STRICT
に設定されていた場合は、mysqli_sql_exception が代わりにスローされます。
例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.