• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPでmysqlへの書き込みでエラー)

PHPでmysqlへの書き込みでエラー

このQ&Aのポイント
  • PHPでmysqlへデータベースの書き込みをする時に変数からデータを書き込むとエラーが出て、どうしてなのかが色々と検索してみたのですが、解決できずにいます。
  • mysqlにはソースは以下の通りです。 表示だけなら、全項目表示は出来ます。 データベースに書き込みんで貯めたいのですが、phpmyadminでデータを記入し、SQL実行ならできました。 mysqlには order というテーブルに orderid int(5) syain varchar(11) syohinmei varchar(11) kingaku int(11) timestamp datetime 上記のカラムが作成してあります。
  • エラー:SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order(syain,syohinmei,kingaku,timestamp) VALUES("中川","サンマ弁当",450,"' at line 1 Syntax error なので、コマンドの間違えなのだろうと思いますが、解決できません。同じことを二回してますが、片方ずつでやってもダメなので、色々試してます。

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

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.2

$sql = 'INSERT INTO order(syain,syohinmei,kingaku,timestamp) VALUES("'.$syain.'","'.$syohinmei.'",'.$kingaku.',"'.$timestamp.'")'; ↓ $sql = 'INSERT INTO order(syain,syohinmei,kingaku,timestamp) VALUES(:syain,:syohinmei,:kingaku,:timestamp)';

nakacchi0614
質問者

お礼

ありがとうございます。 記入方法の考え方の勉強になりました。

nakacchi0614
質問者

補足

回答を頂き、色々考え直して再度記入方法を試してみました。 結果、初心者故にやってしまっているアホな間違いを発見しました。 テーブル名が order これって、予約語だったんですね。 phpmyadminでデータ挿入して`(バッククォート)が付いてて、そのままコマンドラインで実行したら出来たのですが、`を消すと同じエラーが出ました。色々試した結果、バッククォートで括って実行したら出来たので、テーブル名を変更したらエラーがなくなり解決しました。 一人で考えてたら、解決できなかったと思います。 ありがとうございました! ちなみに以下のように変更しました。 $sql = 'INSERT INTO order(syain,syohinmei,kingaku,timestamp) VALUES("'.$syain.'","'.$syohinmei.'",'.$kingaku.',"'.$timestamp.'")'; ↓ $sql = "INSERT INTO `order` (`syain`, `syohinmei`, `kingaku`, `timestamp`) VALUES('$syain','$syohinmei','$kingaku','$timestamp')"; 予約語使ってることが分かったので、テーブル名を変更して。 $sql = "INSERT INTO tyumon (syain,syohinmei,kingaku,timestamp) VALUES('$syain','$syohinmei','$kingaku','$timestamp')"; これで問題なくなりました。 大枠の’を”にしたのは、変数展開できていなかったので変更しました。 勉強になりました。ありがとうございました。

その他の回答 (1)

回答No.1

VALUES("'.$syain.'","'.$syohinmei.'",'.$kingaku.',"'.$timestamp.'")'; ↓ VALUES("':syain.'","':syohinmei.'",':kingaku.',"':timestamp.'")';

nakacchi0614
質問者

お礼

ありがとうございます。 コマンドの書き方の勉強になりました。

関連するQ&A