- ベストアンサー
PHP+MySQLでレコード追加が反映されません
- phpとMySQLで新規レコードを登録するページを作成していますが、レコードが追加されません。
- データベースへの接続とフォームのデータ受け渡しは成功しており、他のページでは問題なくレコードが追加されています。
- INSERT文の書き方が間違っているのか、どなたかお知恵をいただけないでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
// クエリを送信する $sql = "INSERT INTO tablename (AAA, BBB, CCC, DDD, EEE, FFF, GGG, HHH, III, JJJ, KKK, LLL, MMM, NNN, OOO, PPP, QQQ) VALUES (`'$_POST[aaa]','$_POST[bbb]','$_POST[ccc]','$_POST[ddd]','$_POST[eee]','$_POST[fff]','$_POST[ggg]','$_POST[hhh]','$_POST[iii]','$_POST[jjj]','$_POST[kkk]','$_POST[lll]','$_POST[mmm]','$_POST[nnn]','$_POST[ooo]','$_POST[ppp]','$_POST[qqq]')"; これだけでは送信できてません。 mysql_query($sql, $link); これでクエリ送信です。 ちなみにこのmysql_queryですが、クエリが失敗した場合はFALSEを返えします。 それとこのクエリの前に接続閉じてたら送信できませんから、すべてのクエリの後で切断してください。 ちなみに基本的には、phpファイルの実行後にDBは勝手に切断されて、メモリも開放される仕様なので、 明示的に切断する必要がない場合は切断やメモリの開放まで書く必要は薄いです。 直前のmysqlエラーについては、 echo mysql_error($link); で確認できます。 また、この$linkの部分、接続リンクについても、 mysql系関数については引数がない場合は、直前の接続リンクがデフォルトで入る仕様になってますので、 今回の場合は省略して構いません。
その他の回答 (1)
- yambejp
- ベストアンサー率51% (3827/7415)
>VALUES (`'$_POST[aaa]' のバッククォートは転記ミス? こまかいところを見直してみるとtypoがあるのでは? ちなみにPOSTデータをそのままSQLにつなげるのはNG 本番ではかならずエスケープ処理をいれてください
お礼
回答ありがとうございます。 転記ミスですお恥ずかしい・・・ typoは色々検証したのですが、無いようでした。 エスケープ処理、完全に忘れていました。 ありがとうございます。
お礼
回答ありがとうございます。 クエリを送信する前に接続を閉じていたことと、 mysql_query($sql, $link); を書かなかったことが原因だったようです。 アドバイスを頂いた通りに直していったところ、レコード追加ができるようになりました。 ありがとうございます。