mysqli_stmt::store_result
mysqli_stmt_store_result
(PHP 5, PHP 7)
mysqli_stmt::store_result -- mysqli_stmt_store_result — プリペアドステートメントから結果を転送する
説明
オブジェクト指向型
public mysqli_stmt::store_result ( ) : bool
手続き型
mysqli_stmt_store_result
( mysqli_stmt $stmt
) : bool
クエリが結果セットを返す場合(SELECT, SHOW, DESCRIBE, EXPLAIN
)、常に mysqli_stmt_store_result()
をコールする必要があります。また、この関数は結果セットをクライアントの
バッファに格納するだけであり、データを取得するには続けて
mysqli_stmt_fetch() をコールします。
注意:
その他のクエリでは mysqli_stmt_store_result() をコールする必要はありません。しかし、もしコールしてしまったとしても パフォーマンスへの悪影響は一切ありません。クエリが結果セットを 返すかどうかは、mysqli_stmt_result_metadata() が
false
を返すかどうかで調べられます。
返り値
成功した場合に true
を、失敗した場合に false
を返します。
例
例1 オブジェクト指向型
<?php/* 接続をオープンします */$mysqli = new mysqli("localhost", "my_user", "my_password", "world");/* 接続状況をチェックします */ if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit();}$query = "SELECT Name, CountryCode FROM City ORDER BY Name LIMIT 20";if ($stmt = $mysqli->prepare($query)) { /* クエリを実行します */ $stmt->execute(); /* 結果を保存します */ $stmt->store_result(); printf("Number of rows: %d.\n", $stmt->num_rows); /* 結果を開放します */ $stmt->free_result(); /* ステートメントを閉じます */ $stmt->close();}/* 接続を閉じます */$mysqli->close();?>
例2 手続き型
<?php/* 接続をオープンします */$link = mysqli_connect("localhost", "my_user", "my_password", "world");/* 接続状況をチェックします */ if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit();}$query = "SELECT Name, CountryCode FROM City ORDER BY Name LIMIT 20";if ($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)); /* 結果を開放します */ mysqli_stmt_free_result($stmt); /* ステートメントを閉じます */ mysqli_stmt_close($stmt);}/* 接続を閉じます */mysqli_close($link);?>
上の例の出力は以下となります。
Number of rows: 20.
参考
- mysqli_prepare() - 実行するための SQL ステートメントを準備する
- mysqli_stmt_result_metadata() - プリペアドステートメントから結果セットのメタデータを返す
- mysqli_stmt_fetch() - プリペアドステートメントから結果を取得し、バインド変数に格納する