- ベストアンサー
PHP MySQL で updateができません
はじめまして。Amazon.co.jpなどでよくある 「このレビューは参考になりましたか?」 Yes/No でレビューに対する評価機能をPHPで組みたいのですが、 update set でうまくデータ更新ができず困っております。 以下ソース 【入力画面】 ----------------------------------------------------------- <? while ( $adp = mysql_fetch_array( $result6 ) ) { ?> <form name="register" action="rev.php" method="post"> //レビュー内容 <?php $str = nl2br($adp['description']); echo $description . $str ; ?> //レビュー内容 このレビューは参考になりましたか? <input type="radio" name="vote" value="2" checked>参考になった<br> <input type="radio" name="vote" value="1">参考にならなかった<br><br> <? echo $adp['add_id'] ?> <input name="add_id" type="hidden" value="<?= $adp['add_id'] ?>"> <input type="submit" value="- 登録 -"> <input type="reset" value="リセット"> </form> <? } ?> 【完了画面】 ----------------------------------------------------------- <? require( '../config.php' ); require( '../lib.php' ); $link = db_connect(); $sql = "update adp set vote = '" . mysql_real_escape_string( $_POST['vote'] ) . "' where add_id = '" . mysql_real_escape_string( $_GET['add_id'] ) . "'"; $result = mysql_query( $sql ); echo mysql_error(); // ?> 投票完了 ----------------------------------------------------------- 要するに adpのデータベースのadd_idが同じテーブルの中の voteの値を1か2に更新したいだけなのですが、 1人で色々と試してもどうしても更新できずに 困っております。 どなたかお分かりの方がいらっしゃいましたら是非 お教えいただけますと幸いです。 足りない情報などございましたらご連絡ください。 補足させていただきます。 すみません、どうかお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
あれー そうですかー ちなみに echo $sql; で、欲しいSQL文になってるかは確認されてるんですよね??
その他の回答 (2)
- koke29
- ベストアンサー率58% (114/196)
mysql_real_escape_string( $_GET['add_id'] ) . "'"; ↓ mysql_real_escape_string( $_POST['add_id'] ) . "'"; じゃないですか? add_idが取れてないから更新出来てないのでは…と思いますが
補足
ご連絡いただきましてありがとうございます。 ご指摘ありがとうございます。 しかし、GETをPOSTに変更してもやはり 更新できませんでした。
- asuncion
- ベストアンサー率33% (2127/6289)
>1人で色々と試してもどうしても更新できずに 更新できずに、どんなエラーが出るのですか?
補足
早速ご連絡いただきましてありがとうございます! 完了ページは正常に表示されるのです。 しかし、データベースを見ると更新されていません。 ちなみに、 echo mysql_error(); としておりますが、何も表示されません。 他にもございましたら補足させていただきます。 どうぞよろしくお願いいたします。
お礼
早速のお返事ありがとうございます! 申し訳ありません、初心者で知りませんでした・・ 「echo $sql;」でSQL文を確認できるのですね! やってみましたら update adp set vote = '20' where add_id = '2' と表示されました。 (20はデフォルトでデータベースに入っている値です。) 調べてみましたら入力画面でhiddenでvoteの値を 渡すよう設定しておりました。 大変初歩的なミスですみません。 解決しまして本当に感謝しております。 お忙しい中、いろいろと誠にありがとうございました。