(PHP 5, PHP 7, PHP 8)
mysqli_stmt::bind_result -- mysqli_stmt_bind_result — 結果を保存するため、プリペアドステートメントに変数をバインドする
オブジェクト指向型
手続き型
結果セットのカラムを変数にバインドします。
データを取得するために mysqli_stmt_fetch() がコールされた場合、MySQL クライアント/ サーバー プロトコルはバインドされたカラムのデータを var
/vars
に格納します。
結果セットが一部取得された後であっても、 カラムはいつでもバインドしたり、再バインドしたりできます。 新しいバインドは、 mysqli_stmt_fetch() が次回コールされた時に効力を発揮します。
注意:
すべてのカラムを、mysqli_stmt_execute() をコールしてから mysqli_stmt_fetch() をコールするまでの間に バインドしておく必要があることに注意しましょう。
注意:
カラムの型に応じて、 バインド変数の型も対応する PHP の型に自動的に変換されます。
この関数は、結果が単一の値の場合に役立つものです。 反復可能な結果セットを取得したり、 行をオブジェクトや配列で取得したい場合は、 mysqli_stmt_get_result() を使って下さい。
stmt
手続き型のみ: mysqli_stmt_init() が返す mysqli_stmt オブジェクト。
var
バインドする最初の変数。
vars
バインドする残りの変数。
例1 オブジェクト指向型
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
$stmt = $mysqli->prepare("SELECT Code, Name FROM Country ORDER BY Name LIMIT 5");
$stmt->execute();
$stmt->bind_result($col1, $col2);
while ($stmt->fetch()) {
printf("%s %s\n", $col1, $col2);
}
例2 手続き型
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
$stmt = mysqli_prepare($link, "SELECT Code, Name FROM Country ORDER BY Name LIMIT 5");
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt, $col1, $col2);
while (mysqli_stmt_fetch($stmt)) {
printf("%s %s\n", $col1, $col2);
}
上の例の出力は、 たとえば以下のようになります。
AFG Afghanistan ALB Albania DZA Algeria ASM American Samoa AND Andorra