我想在下表中插入一个新行:
+-------------------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------------+---------------------+------+-----+---------+-------+
| index | bigint(20) unsigned | NO | PRI | NULL | |
| exports_fields_id | bigint(20) unsigned | NO | PRI | NULL | |
| exports_id | bigint(20) unsigned | NO | MUL | NULL | |
+-------------------+---------------------+------+-----+---------+-------+
为此我尝试了以下sql语句:
INSERT INTO 'exports_has_export_fields' ('index', 'exports_fields_id', 'exports_id') VALUES (0, 78, 3);
但后来我收到以下错误:
ERROR 1064(42000):您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以便在第1行''exports_has_export_fields'('index','exports_fields_id','exports_id')附近使用正确的语法`VALUES'
5 回答
您使用单引号,但需要反引号(`)来引用名称可能与MySQL保留关键字冲突的字段或表 .
在这种情况下,只是
index
是一个保留的,即使你可以为了安全起见,也可以反击所有内容 .所以你可以说:
要不就
来自When to use single quotes, double quotes, and backticks?:
我认为字段
index
是主键,它不是零尝试在插入0值之前 .
尝试一下(用反引号编辑)
表名和列名不应该有单引号 .
如果要插入表的所有列,可以像这样缩短Insert语句:
您是否尝试从表名和字段中删除单引号?
或者,如果您想缩短查询,请尝试
index
是reserved word . 引用它(带反叛) .所以你应该使用反引号“而不是单引号” .