- ベストアンサー
※ 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 なので、コマンドの間違えなのだろうと思いますが、解決できません。同じことを二回してますが、片方ずつでやってもダメなので、色々試してます。
- みんなの回答 (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)';
その他の回答 (1)
- kosukejlampnet
- ベストアンサー率44% (126/282)
回答No.1
VALUES("'.$syain.'","'.$syohinmei.'",'.$kingaku.',"'.$timestamp.'")'; ↓ VALUES("':syain.'","':syohinmei.'",':kingaku.',"':timestamp.'")';
質問者
お礼
ありがとうございます。 コマンドの書き方の勉強になりました。
お礼
ありがとうございます。 記入方法の考え方の勉強になりました。
補足
回答を頂き、色々考え直して再度記入方法を試してみました。 結果、初心者故にやってしまっているアホな間違いを発見しました。 テーブル名が 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')"; これで問題なくなりました。 大枠の’を”にしたのは、変数展開できていなかったので変更しました。 勉強になりました。ありがとうございました。