2010-11-10 7 views
5

Für das Leben von mir, die i scheinen kann esAbfragefehler für Abfrage einer Spalte mit dem Namen „Ordnung“

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 für die Abfrage bereitstellt und 'TABLE' Skript erstellen. – Quassnoi

+0

mögliches Duplikat von [Wie kann ich SQL für eine Tabelle schreiben, die denselben Namen wie ein geschütztes Schlüsselwort in MySql hat?] (Http://stackoverflow.com/questions/10706920/how-can-i-write-sql-for -a-table-that-shares-the-self-name-as-a-protected-Schlüsselwort) – Jocelyn

Antwort

8

Order ist ein reserviertes Wort. Legen Sie die Order in Backticks bei, wenn Sie beabsichtigen, sie zu verwenden.

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

Sie haben Recht, dass es ein reserviertes Wort ist, aber die SET-Syntax mit einer INSERT-Anweisung ist in der Tat gültig. – Cfreak

+0

Randnotiz: Schließen Sie einfach alle Felder in Backticks ein, besonders wenn Sie diese Abfrage generieren. Es ist sicherer. –

+0

Hmm ... Ich habe diese Syntax nie benutzt ... Ich habe nur die Dokumente überprüft. +1 für Sie und eine bearbeitete Antwort. :-) Vielen Dank! – Buggabill

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

, um herauszufinden, wie Cfreak in den Kommentaren darauf hingewiesen, Ihre Syntax ist gültig. Es ist Ihr Problem mit dem nicht entschlüsselten Order-Keyword.

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

wie ich mit allen anderen kommentierte. SET-Syntax ist gültig in einer Insert-Anweisung – Cfreak

+0

@Cfreak, du hast Recht. Ich habe diese Syntax noch nie zuvor benutzt. Ich benutze zu MSSQL: P. Danke, aktualisierte Antwort – Brandon

2

um ein reserviertes Wort in SQL, müssen Sie proably, dass Spaltennamen entkommen:

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