所以我一直坚持这个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服务器版本对应的手册,以获得正确的语法 靠近'之前,之后,date_added)VALUES('image4-after.jpg', 第1行的'portrait','1','1','1'
任何人都可以告诉我我做错了什么吗?
感谢
答案 0 :(得分:10)
BEFORE
是MySQL reserved keyword。您需要使用反引号引用它以将其用作表或列标识符。
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...
指示符中语法不明显的内容时,请查看保留字列表。
答案 1 :(得分:3)
BEFORE
是关键字。
尝试使用反引号(`)转义字段名称。
答案 2 :(得分:1)
我猜这是因为之前是mysql中的保留字(http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html)。
使用向后引号尝试围绕:before
。