看不到mySql语法错误

时间:2011-10-19 09:25:54

标签: mysql pdo

抱歉这个愚蠢的问题,但我无法弄清楚我的错字:

INSERT INTO lunchmenu (rid, date, repeat, approved) VALUES ('32', '2011-10-18', '3', '0')

我收到mySQL(v5)错误

  

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   '重复,批准'附近的价值('32','2011-10-18','3','0')'在线   1

我的表结构是

   Field    Type    Size - NULL - Key - Attribute - Default - Extra
1. id       int     11     no     PI    unsigned              auto_increment
2. rid      int     11     no           unsigned                
3. date     date           no     I                     
4. repeat   tinyint 1      no           unsigned    0           
5. approved int     10     no     I     unsigned    0

对我有任何暗示吗?感谢。

4 个答案:

答案 0 :(得分:3)

daterepeatreserved words in mySQL.

用反引号包裹它们,或使用不同的列名。

答案 1 :(得分:1)

问题是REPEATDATE是保留的,您需要使用反引号将其转义为将其用作列。

INSERT INTO `lunchmenu` (`rid`, `date`, `repeat`, `approved`) VALUES ....

始终转义列名和表名是一种很好的做法。

答案 2 :(得分:1)

试试这个:

INSERT INTO lunchmenu (rid, `date`, `repeat`, approved) 
VALUES (32, '2011-10-18', 3, 0)

Daterepeat是保留字,因此您必须使用反引号。
可以找到其他保留字here

答案 3 :(得分:0)

DATEREPEAT是MySQL中的保留关键字,请尝试

INSERT INTO lunchmenu AS l (l.rid, l.date, l.repeat, l.approved) VALUES ('32', '2011-10-18', '3', '0')

这会使您的数据库明确地将它们解析为列。