这个sql怎么了?

时间:2013-11-06 19:23:17

标签: php mysql sql

我是php和sql的新手,所以你能告诉我如何修复这个sql错误,请帮助我。 sql在下面。

INSERT INTO xml-group (id,groupid,name,descriptor,cust_id) 
VALUES (1,1,'other contacts','other contacts',16)

错误是:

  

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   '-group(id,groupid,name,descriptor,cust_id)VALUES附近   ('0','0','手机','手机',1'在第1行

非常感谢

5 个答案:

答案 0 :(得分:5)

不带引号的表名中不允许-。使用反引号来引用xml-group

INSERT INTO `xml-group` (id,groupid,name,descriptor,cust_id) 
VALUES (1,1,'other contacts','other contacts',16)

顺便说一下,在设计良好的数据库模式中,您可以避免使用此类名称,而是使用_

答案 1 :(得分:2)

使用反引号arround表名,它会导致GROUP成为mysql的特殊关键字

INSERT INTO `xml-group` (id,groupid,name,descriptor,cust_id) 
VALUES (1,1,'other contacts','other contacts',16)

答案 2 :(得分:0)

此外,如果字段ID是自动编号字段,则已分配主索引和“1”,您将收到错误。 (与需要唯一值的任何其他字段相同...)

答案 3 :(得分:0)

“ - ”SQL语法中不允许使用连字符。 使用反引号(`)符号来逃避它。

答案 4 :(得分:0)

修复它的两个选项:

  • 将xml-group替换为xml_group
  • 在其周围加入反引号,例如`xml-group`

就我个人而言,我会做上述两种选择,但你可以只使用一种。

出于几个原因,您最好强制使用后退。我自己反复使用的主要原因是:

  • 您不必担心与保留或未来的关键词发生冲突。

其他原因,但通常取决于您/可以在整个代码库上执行的个人偏好和编码标准:

  • 您可以轻松搜索整个项目以使用该特定表。例如,如果你做了SELECT user FROM users,你很可能有方法名,变量,注释等都包含“user”这个词,这使得很难找到包含对用户表的引用的所有查询阳性。但是,如果你强制使用后退标记,你只需要搜索`users`来查找引用它的所有查询以及字段(只要你没有将查询抽象到它们在运行时构建的那些点,就像:“SELECT` $ field` FROM` $ table`”)。
  • 它可以帮助提高清晰度和可读性,因为它可以直观地将关键字与字段名称和表名等变量值分开,即使所有内容都是小写的。