mysqli_stmt::bind_result

mysqli_stmt_bind_result

結果を保存するため、プリペアドステートメントに変数をバインドする

説明

オブジェクト指向型

public bool mysqli_stmt::bind_result(mixed &$var, mixed &...$vars)

手続き型

bool mysqli_stmt_bind_result(mysqli_stmt $statement, mixed &$var, mixed &...$vars)

結果セットのカラムを変数にバインドします。

データを取得するために 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

バインドする残りの変数。

戻り値

成功した場合に true を、失敗した場合に false を返します。

例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

参考

  • mysqli_stmt_get_result
  • mysqli_stmt_bind_param
  • mysqli_stmt_execute
  • mysqli_stmt_fetch
  • mysqli_prepare
  • mysqli_stmt_prepare