PDOStatement::bindColumn — 列を PHP 変数にバインドする (PHP 5 >= 5.1.0、PECL pdo >= 0.1.0)
bool PDOStatement::bindColumn (mixed $column ,mixed &$param [, int $type [, int $maxlen [,mixed $driverdata ]]] )
特定の変数がクエリ結果セット内の特定の列にバインドされるように手配します。 PDOStatement::fetch() または PDOStatement::fetchAll() を呼び出すたびに、列にバインドされているすべての変数が更新されます。
注:列に関する PDO 情報は、ステートメントの実行前に常に入手できるとは限りません。ポータブル アプリケーションは、PDOStatement::execute() の後にこの関数 (メソッド) を呼び出す必要があります。ただし、PgSQL ドライバーを使用する場合、LOB 列をストリームとしてバインドできるようにするには、アプリケーションは PDOStatement::execute() を呼び出す前にこのメソッドを呼び出す必要があります。そうしないと、ラージ オブジェクトの OID が整数として返されます。
列結果セット内の列番号 (1 から始まるインデックス) または列名。列名を使用する場合、その名前はドライバーによって返される列名の大文字と小文字が一致している必要があることに注意してください。
param列にバインドされる PHP 変数名
typePDO ::PARAM_* 定数で指定されたパラメータのデータ型。
maxlen の事前割り当てのヒント。
driverdataドライバーのオプションのパラメーター。
成功した場合は TRUE を返し、失敗した場合は FALSE を返します。
結果セット内の列を PHP 変数にバインドすることは、各行に含まれるデータをアプリケーションですぐに使用できるようにする効率的な方法です。次の例は、PDO がさまざまなオプションとデフォルト値を使用して列をバインドおよび取得する方法を示しています。
<?phpfunction readData($dbh) { $sql = '果物から名前、色、カロリーを選択'; try { $stmt = $dbh->prepare($sql); /* 列を渡す数値バインディング*/ $stmt->bindColumn(1, $name); /*列名によるバインド*/ $stmt->bindColumn('cals', $cals); while ($row = $stmt->fetch(PDO::FETCH_BOUND)) { $data = $name . $ color . $cals . "n"; } } catch (PDOException $e) { print $e->getMessage(); }}readData($dbh);?>
上記のルーチンは次を出力します。
アップルレッド 150 バナナイエロー 175 キウイグリーン 75 オレンジオレンジ 150 マンゴーレッド 200 ストロベリーレッド 25