• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PDOのバインドをforeachでまとめて処理したいができません…。)

PDOのバインドをforeachでまとめて処理したいができません

このQ&Aのポイント
  • PDOのバインドをforeachループでまとめて処理しようとしていますが、うまくいきません。
  • PHP5.2.5を使用しています。DBには'id'、'color'、'num'の3つのフィールドがあります。
  • 方法1では、foreachループでバインド処理を行っていますが、結果がうまくいかず、[color]の値が6と表示されてしまいます。方法2では手書きでバインド処理を行っているため正しく処理されます。方法1の問題箇所を教えていただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

bindParamでバインドされるのは変数の値ではなく変数です。また、マニュアルから引用すると 「変数は参照としてバインドされ、PDOStatement::execute() がコールされたときのみ評価されます。」 なので、foreach内での >$stmt->bindParam(':'.$field,$value); は、言ってみれば$valueの位置を記憶しているにすぎません。 で、execute実行時に初めて中身の値を取りに行き、そこに入っているもの(要するにforeachの最後の値)をセットしてしまっています。

参考URL:
http://www.php.net/manual/ja/pdostatement.bindparam.php
march4
質問者

お礼

早速どうもありがとうございます。 >bindParamでバインドされるのは変数の値ではなく変数 すぱっと理解できました。 では、いざ挑戦してきます! うまく動くことが確認できましたら、回答を締め切らせて頂きます!

関連するQ&A