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

# mysqli_stmt::bind_result

# mysqli_stmt_bind_result

(PHP 5, PHP 7)

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

### 説明

オブジェクト指向型

mysqli_stmt::bind_result ( mixed `&$var1` [, mixed `&$...` ] ) : bool

手続き型

mysqli_stmt_bind_result ( mysqli_stmt `$stmt` , mixed `&$var1` [, mixed `&$...` ] ) : bool

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

データを取得するために mysqli_stmt_fetch() がコールされた場合、MySQL クライアント/ サーバー プロトコルはバインドされたカラムのデータを `var1, ...` に格納します。

> 注意:

> すべてのカラムを、mysqli_stmt_execute() をコールしてから mysqli_stmt_fetch() をコールするまでの間に バインドしておく必要があることに注意しましょう。カラムの型に 応じて、バインド変数の型も対応する PHP の型に自動的に変換されます。

> カラムのバインドや再バインドはいつでも可能で、たとえ結果セットを途中まで 取得した後であっても可能です。新しくバインドした内容が効力を発揮するのは、 次に mysqli_stmt_fetch() がコールされたときからです。

### パラメータ

`stmt`

  手続き型のみ: mysqli_stmt_init() が返すステートメント ID。

`var1`

  バインドする変数。

### 返り値

成功した場合に `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();
}
/* ステートメントを準備します */
if ($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);
}
/* ステートメントを閉じます */
$stmt->close();
}
/* 接続を閉じます */
$mysqli->close();
?>`

例2 手続き型

`<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
/* 接続状況をチェックします */
if (!$link) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
/* ステートメントを準備します */
if ($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);
}
/* ステートメントを閉じます */
mysqli_stmt_close($stmt);
}
/* 接続を閉じます */
mysqli_close($link);
?>`

上の例の出力は以下となります。

    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() - 実行するための SQL ステートメントを準備する
- mysqli_stmt_prepare() - SQL ステートメントを実行するために準備する
- mysqli_stmt_init() - ステートメントを初期化し、mysqli_stmt_prepare で使用するオブジェクトを返す
- mysqli_stmt_errno() - 直近のステートメントのコールに関するエラーコードを返す
- mysqli_stmt_error() - 直近のステートメントのエラー内容を文字列で返す