dポイントプレゼントキャンペーン実施中!

投票システムでチェックボックスから選択されたキーをまとめてUPDATEするには、
どの様なUPDATE文にすれば良いのでしょうか?

--------------------------------------------------------------

for ($i = 0; $i < count(@$_POST["answer"]); $i++) {

echo $_POST["answer"][$i]."が選択されました"; // ← 一応PHP上で正常に値が返るかを確認しました。

$data = $_POST["answer"][$i]; // ←変数に置き換えました。

$conn = db_conn();
$sql = "UPDATE an SET ";
$sql .= " sel" . $data . "cnt = sel" . $data . "cnt + 1";
$sql .= " WHERE id = '" . cnv_sqlstr($id) . "'" ;

}

--------------------------------------------------------------

という様に書くと、最後にチェックしたキーのみがUPDATEされ、
その他のキーは無視されてしまいます。

echo文でPHP上で正常に走っているかどうかを確認したところ
問題はありませんでしたが、UPDATE文でデータベースに投げると
上手くいきません。

どうかご教示の程よろしくお願い申し上げます。

A 回答 (2件)

仕様がいまいちわからないのですが



forループの中で「$conn = db_conn()」する意味はあるのでしょうか?
また、作成された$sqlがループ内で発行されていなようですが
ループ後に発行しているならおそらく最終データしか更新されませんね
    • good
    • 0
この回答へのお礼

提示しているソースより下の箇所でクエリを発行していて、
確かにfor文の中にありませんでした。
for文の終了の中カッコの位置を変更して正常に走りました。
単純ミスには今後も気をつけます。

本当にありがとうございます。

お礼日時:2012/03/31 15:31

No.1の方もおっしゃるとおり、ループ内にExecuteSQL()のようなSQLを発行する関数がないですね。


おそらく、ループの外にあるのでしょうが、

> $sql = "UPDATE an SET ";

この時点で前回代入されたSQL文は上書きされてしまっているので
当然の結果かと思います。
    • good
    • 0
この回答へのお礼

提示しているソースより下の箇所でクエリを発行していて、
確かにfor文の中にありませんでした。
for文の終了の中カッコの位置を変更して正常に走りました。
単純ミスには今後も気をつけます。

本当にありがとうございます。

お礼日時:2012/03/31 15:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!