2010-11-10 50 views
5

對我的生活中,我似乎可以推測出來查詢錯誤包含一個名爲「命令」

INSERT INTO category SET CategoryName = 'Hardware_1', 
Category = 'HARDWARE', Status = '1', Order = '1' 

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 'Order = '1'' at line 1 

CREATE TABLE `category` (
    `CategoryID` int(11) NOT NULL AUTO_INCREMENT, 
    `CategoryName` varchar(255) NOT NULL, 
    `Category` varchar(255) NOT NULL, 
    `Status` tinyint(4) NOT NULL, 
    `Order` int(11) NOT NULL, 
    PRIMARY KEY (`CategoryID`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1; 
+2

+1提供查詢和'CREATE TABLE'腳本。 – Quassnoi 2010-11-10 22:16:56

+0

可能重複的[我怎樣才能寫一個與MySql中的受保護關鍵字名稱相同的表的SQL?](http://stackoverflow.com/questions/10706920/how-can-i-write-sql-for -a-table-that-shares-the-same-name-as-a-protected-keyword) – Jocelyn 2013-05-06 06:38:20

回答

8

Order是保留字。如果您打算使用它,請在反引號中附上訂單。

INSERT INTO category SET CategoryName = 'Hardware_1', 
Category = 'HARDWARE', Status = '1', `Order` = '1' 
+2

你是正確的,它是一個保留字,但帶有INSERT語句的SET語法確實是有效的。 – Cfreak 2010-11-10 22:16:24

+0

備註:只需將所有字段放在反引號中,特別是在生成此查詢時。這更安全。 – 2010-11-10 22:19:08

+0

嗯...我從來沒有使用過這種語法......我只是檢查了文檔。爲你+1和編輯答案。 :-) 謝謝! – Buggabill 2010-11-10 22:21:40

3
INSERT 
INTO category (CategoryName, Category, Status, `Order`) 
VALUES ('Hardware_1', 'HARDWARE', 1, 1) 
6

由於Cfreak在評論中指出的列的查詢,你的語法是有效的。這是您使用非轉義的Order關鍵字是問題。

Insert Into category (CategoryName, Category, Status, `Order`) 
Values ('Hardware_1', 'HARDWARE', '1', '1') 
+1

正如我評論過其他人一樣。 SET語法在插入語句中有效 – Cfreak 2010-11-10 22:17:46

+0

@Cfreak,你是對的。我從來沒有使用過這種語法。我用MSSQL:P。謝謝,更新回答 – Brandon 2010-11-10 22:19:01

2

順序是SQL的保留字,你proably需要逃脫列名:

INSERT INTO category SET CategoryName = 'Hardware_1', Category = 'HARDWARE', Status = '1', [Order] = '1' 
相關問題