PDOStatement::bindColumn
(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)
PDOStatement::bindColumn — カラムを PHP 変数にバインドする
説明
string|int
$column
,mixed
&$var
,int
$type
= PDO::PARAM_STR,int
$maxLength
= 0,mixed
$driverOptions
= null
): bool
PDOStatement::bindColumn() は、 クエリからの結果セット中にあるカラムにバインドされた特定の値を 取得するための準備をします。 PDOStatement::fetch() もしくは PDOStatement::fetchAll() がコールされる度に、カラムにバインドされた全ての変数は更新されます。
注意:
カラムに関する情報はステートメントが実行されるまで常に PDO から利用できないため、移植可能なアプリケーションでは PDOStatement::execute(). の 後に この関数をコールするようにしてください。
しかし、LOB カラムをストリームにバインドする際に PgSQL ドライバ を使用するときには、 このメソッドを PDOStatement::execute() の 前に コールしなければなりません。 そうしないと、ラージオブジェクトの OID が integer で返されます。
パラメータ
column
-
結果セット中のカラム番号 (1 から始まる) を指定します。 カラム名を使用する場合、 ドライバによって返されるカラムの大文字小文字が一致する必要が あることをご承知おきください。
var
-
カラムがバインドされる PHP 変数名を指定します。
type
-
パラメータのデータ型を
PDO::PARAM_*
定数 で指定します。 maxLength
-
領域を事前に確保するためのヒント。
driverOptions
-
ドライバのオプションパラメータ。
エラー / 例外
PDO::ATTR_ERRMODE
が PDO::ERRMODE_WARNING
に設定されていた場合、E_WARNING
レベルのエラーが発生します。
PDO::ATTR_ERRMODE
が PDO::ERRMODE_EXCEPTION
に設定されていた場合、PDOException がスローされます。
例
例1 バインドした結果セットを PHP 変数に出力する
PHP 変数にバインドしている結果セットのカラムは、 アプリケーションで利用可能な各行に含まれるデータを作成するための 効果的な方法です。 以下のサンプルは、どうやって PDO が様々なオプションやを理にかなったデフォルト値を用いて カラムをバインド、取得するかを例示しています。
<?php
$stmt = $dbh->prepare('SELECT name, colour, calories FROM fruit');
$stmt->execute();
/* カラム番号によってバインドする */
$stmt->bindColumn(1, $name);
$stmt->bindColumn(2, $colour);
/* カラム名によってバインドする */
$stmt->bindColumn('calories', $cals);
while ($stmt->fetch(PDO::FETCH_BOUND)) {
print $name . "\t" . $colour . "\t" . $cals . "\n";
}
?>
上の例の出力は、 たとえば以下のようになります。
apple red 150 banana yellow 175 kiwi green 75 orange orange 150 mango red 200 strawberry red 25
参考
- PDOStatement::execute() - プリペアドステートメントを実行する
- PDOStatement::fetch() - 結果セットから次の行を取得する
- PDOStatement::fetchAll() - 結果セットから、残っている行を取得する
- PDOStatement::fetchColumn() - 結果セットの次行から単一カラムを返す