大家好我在插入查询中遇到错误 下面是查询
echo $ sql =" INSERT INTO事件(模式,标题,desc,日期,状态)VALUES(' $ mode',' $ title',' ; $降序'' $日期'' $状态')&#34 ;;
及以下是错误
SQL语法错误
检查与MySQL服务器版本对应的手册,以便在'desc,date,status)VALUES('Event','fdsagsd','fa sdgavsd ','2015-01-21','1')' at line 1
附近使用正确的语法
答案 0 :(得分:3)
问题是desc
是一个保留字(想到order by
),因此当您将其用作列名时,需要使用反引号对其进行配额。
来自section 9.2 of the MySQL documentation:
MySQL中的某些对象(包括数据库,表,索引,列,别名,视图,存储过程,分区,表空间和其他对象名称)称为标识符。本节介绍MySQL中标识符的允许语法。第9.2.2节“标识符区分大小写”描述了哪些类型的标识符区分大小写以及在什么条件下。
标识符可以引用或不引用。如果标识符包含特殊字符或是保留字,则无论何时引用它都必须引用它。
...
标识符引号字符是反引号(“`”):
mysql> SELECT * FROM `select` WHERE `select`.id > 100;
所以你想要的SQL是:
INSERT INTO event(mode, title, `desc`, date, status)
VALUES ('Event', 'fdsagsd', 'fa sdgavsd ', '2015-01-21','1')
(额外的空格当然不是 ,但我建议将它们包括在内以使SQL更具可读性。)
当然,鉴于您需要在使用它的任何地方引用列名称,您可能会认为将其重命名为更简单,以便 >一个保留字 - 部分取决于其他代码已使用该模式的程度。
答案 1 :(得分:2)
描述被误解*。你需要用``来逃避它,或者使用一个更好的名称作为描述的列(最好是后者或两者)。
INSERT INTO event(mode,title,`desc`,date,status)VALUES('Event','fdsagsd','fa sdgavsd ','2015-01-21','1');
答案 2 :(得分:0)
由于日期和desc是键,因此在每个字段之前和之后添加反引号(`)。