人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PDO・bindColumnについて
変数の場合bindParam、
値の場合bindValueを使えばいいようですが
bindColumnは具体的にはどのような場合に使うのでしょうか?

●質問者: 匿名質問者
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● 匿名回答1号

(1)bindParam と bindValue はSQLに値を渡す際に利用するもの

bindParam は execute を実行する段階で値を取り込むため、
forなどで繰り返してexecuteを実行する際に便利。
実行するまで変数の状態を確認できないので、
あとから思わぬエラーが発生する場合もあったりして本番前テストは重要。

bindValue は bindValue を実行した段階で値を取り込むため、
未定義エラーなどの事前構文チェックができて便利。
慣れないなれないうちは全てbindValueにしてもいいかもしれない。

(2)bindColumn はSQLの実行結果から値を取り出す際に利用するもの

bindColumn で変数にバインドしなくても値は取り出せます

while ($row = $stmt->fetch(PDO::FETCH_NUM)) {
 echo $row[0];
 echo $row[1];
 echo $row[2];
}
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
 echo $row['id'];
 echo $row['name'];
 echo $row['age'];
}

bindColumn を使うと好きな変数に割り当てられます。
見易さもさることながら処理速度的にも若干有利になります。
ただし、変数の数がそれだけ増えるということになりますので、
プログラム作成前に変数名のリストでも作ってしっかり管理しておかないと、
どれが何のための変数かわからなくなるかもしれません。

$stmt->bindColumn(1, $id);
$stmt->bindColumn(2, $name);
$stmt->bindColumn(3, $age);
while ($row = $stmt->fetch(PDO::FETCH_BOUND)) {
 echo $id;
 echo $name;
 echo $age;
}
$stmt->bindColumn('id', $id);
$stmt->bindColumn('name', $name);
$stmt->bindColumn('age', $age);
while ($row = $stmt->fetch(PDO::FETCH_BOUND)) {
 echo $id;
 echo $name;
 echo $age;
}
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ