匿名質問者
匿名質問者匿名質問者とは「匿名質問」を利用して質問した質問者。
「匿名質問」では、ユーザー名を公開せずに匿名の質問ができます。
詳しくはこちら

PDO・bindColumnについて

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

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2013/04/11 14:38:48
  • 終了:2013/04/18 14:40:05

回答(1件)

匿名回答1号 No.1

匿名回答1号「匿名質問」を利用した質問に回答すると「匿名回答○号」と匿名で表示されます。
「匿名質問」では、ユーザー名を公開せずに匿名の質問ができます。
詳しくはこちら
2013/04/11 15:09:01

(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;
}

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません