-2

我是 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','mobiles','mobile',1 附近使用的正确语法' 在第 1 行

非常感谢

4

5 回答 5

5

-不允许在未加引号的表名中使用。使用反引号引用xml-group

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

顺便说一句,在设计良好的数据库模式中,您可能会避免使用此类名称并_改为使用。

于 2013-11-06T19:25:37.593 回答
2

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

INSERT INTO `xml-group` (id,groupid,name,descriptor,cust_id) 
VALUES (1,1,'other contacts','other contacts',16)
于 2013-11-06T19:26:17.103 回答
0

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

于 2013-11-06T19:29:26.753 回答
0

"-" SQL 语法中不允许使用连字符。使用反引号 (`) 符号对其进行转义。

于 2013-11-06T19:29:30.940 回答
0

修复它的两个选项:

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

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

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

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

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

  • 您可以轻松地搜索整个项目以使用该特定表。例如,如果您这样做SELECT user FROM users了,那么很有可能您的方法名称、变量、注释等都包含“用户”一词,这使得在众多误报中很难找到包含对用户表的引用的所有查询。但是,如果您强制使用反引号,您只需搜索“用户”即可找到引用它的所有查询以及字段(只要您没有将查询抽象到它们在运行时构建的点,例如:“从`$table`中选择`$field`”)。
  • 它可以帮助提高清晰度和可读性,因为它可以直观地将关键字与字段名称和表名称等变量值分开,即使所有内容都是小写的。
于 2013-11-06T19:42:38.523 回答