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

# mysqli_stmt::bind_result

# mysqli_stmt_bind_result

(PHP 5, PHP 7, PHP 8)

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

### 説明

オブジェクト指向型

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

手続き型

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

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

データを取得するために 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_result オブジェクトとして取得する
- mysqli_stmt_bind_param() - プリペアドステートメントのパラメータに変数をバインドする
- mysqli_stmt_execute() - プリペアドステートメントを実行する
- mysqli_stmt_fetch() - プリペアドステートメントから結果を取得し、バインド変数に格納する
- mysqli_prepare() - 実行するための SQL文 を準備する
- mysqli_stmt_prepare() - SQL ステートメントを実行するために準備する

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open