- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PDOのバインドをforeachでまとめて処理したいができません…。)
PDOのバインドをforeachでまとめて処理したいができません
このQ&Aのポイント
- PDOのバインドをforeachループでまとめて処理しようとしていますが、うまくいきません。
- PHP5.2.5を使用しています。DBには'id'、'color'、'num'の3つのフィールドがあります。
- 方法1では、foreachループでバインド処理を行っていますが、結果がうまくいかず、[color]の値が6と表示されてしまいます。方法2では手書きでバインド処理を行っているため正しく処理されます。方法1の問題箇所を教えていただきたいです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
bindParamでバインドされるのは変数の値ではなく変数です。また、マニュアルから引用すると 「変数は参照としてバインドされ、PDOStatement::execute() がコールされたときのみ評価されます。」 なので、foreach内での >$stmt->bindParam(':'.$field,$value); は、言ってみれば$valueの位置を記憶しているにすぎません。 で、execute実行時に初めて中身の値を取りに行き、そこに入っているもの(要するにforeachの最後の値)をセットしてしまっています。
お礼
早速どうもありがとうございます。 >bindParamでバインドされるのは変数の値ではなく変数 すぱっと理解できました。 では、いざ挑戦してきます! うまく動くことが確認できましたら、回答を締め切らせて頂きます!