2014-02-28 72 views
1

我有这个错误,我似乎无法找到正确的答案。我正在用PHP编写它,但在调试后,我试图直接在phpMyAdmin上编写它。这是我的SQL查询:INSERT INTO查询中的SQL错误

INSERT INTO users ('fName' , 'lName' , 'pCity' , 'cue' , 'email' , 'pass' , 'bDate') VALUES ('Me', 'You', 'Sofia', 'adf', '***', '***', '02/02/2010') 

这里是我得到的错误:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''fName' , 'lName' , 'pCity' , 'cue' , 'email' , 'pass' , 'bDate') VALUES ('Kali' at line 1 

我在服务器上运行相应的PHP脚本时,得到了同样的错误。任何想法,我出错了?

回答

4

的问题是在列标识符单引号。

既可以使用“`”或如果列标识符具有空间或保留字

不使用引号

INSERT INTO users (fName , lName , pCity , cue , email , pass , bDate) VALUES ('Me', 'You', 'Sofia', 'adf', '***', '***', '02/02/2010') 

如tadman提到的,仅需要实施例反引号

INSERT INTO users (fName , `Last Name` , pCity , cue , email , pass , bDate) VALUES ('Me', 'You', 'Sofia', 'adf', '***', '***', '02/02/2010') 
+2

只有在具有空格,特殊字符或与[保留关键字]冲突的列名上才需要反引号(http://dev.mysql.com/doc/refman/5.6/en/reserved-words。 HTML)。 – tadman

+2

我会说,首先使用空格,特殊字符或保留关键字是不好的做法 –

6

请勿将列标识符封装在单引号中。使用蜱:

INSERT INTO users (`fName` , `lName` , `pCity` , `cue` , `email` , `pass` , `bDate`) 
VALUES ('Me', 'You', 'Sofia', 'adf', '***', '***', '02/02/2010') 
2

错误报价:

INSERT INTO users ('fName' , 'lName' , 'pCity' , etc... 
        ^-----^-- etc... 

'引号把东西放到字符串。你想backticks`代替:

INSERT INTO users (`fName` , `lName` , `pCity` , etc... 
2

由于没有人提到它,我会避免使用具有空格,特殊字符或保留字的列名。需要反标的列名最终会导致难以追踪错误。

1

当您执行INSERT INTO时,不需要在列名称周围使用单引号。如果您要插入列名中具有空格的列,则使用反引号来包围列名。

INSERT INTO users (`First Name` , `Last Name` , pCity , etc ....