2

だから私はしばらくの間このSQLエラーで立ち往生しています。

これは私が使用しているSQL行です:

INSERT INTO images (image_name, orientation, restored, commercial, automotive, bespoke, before, after, date_added) 
VALUES ('image4-after.jpg', 'portrait', '1', '1', '1', '1', '24', '5', '2012-07-08')

この構造を使用する:

image_id - int(11) AUTO_INCREMENT
image_name - varchar(40)
orientation - varchar(4)
restored - tinyint(1)
commercial - tinyint(1)
automotive - tinyint(1)
bespoke - tinyint(1)
before - int(11)
after - int(11)
date_added - date

エラーメッセージの取得:

1064-SQL構文にエラーがあります。MySQLサーバーのバージョンに対応するマニュアルで、「before、after、date_added」の近くで使用する正しい構文を確認してください。VALUES('image4-after.jpg'、'portrait'、 '1'、 '1'、 '1'' 1行目

誰かが私が間違ったことを教えてもらえますか?

ありがとう

4

3 に答える 3

10

BEFORE MySQLの予約キーワードです。テーブルまたは列の識別子として使用するには、バッククォートで引用する必要があります。

INSERT INTO images (image_name, orientation, restored, commercial, automotive, bespoke, `before`, after, date_added) 
VALUES ('image4-after.jpg', 'portrait', '1', '1', '1', '1', '24', '5', '2012-07-08')

AFTERただし、予約されていません。

1064エラーがそのright syntax to use near...インジケーターで構文的に自明でない何かを指している場合は常に、予約語リストを調べてください。

于 2012-07-08T19:44:56.140 に答える
3

BEFOREMySQLのドキュメントによると、はキーワードです。

バッククォート( `)でフィールド名をエスケープしてみてください。

于 2012-07-08T19:45:16.437 に答える
1

以前はmysql(http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html)の予約語であるためだと思います。

前に逆引用符で囲んでみてください: before

于 2012-07-08T19:46:25.687 に答える