2010-11-10 4 views
5

Đối với cuộc sống của tôi, tôi có thể dường như con số nó ralỗi Query cho truy vấn có chứa một cột có tên là "trật tự"

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 cho việc cung cấp các truy vấn và 'CREATE kịch bản TABLE'. – Quassnoi

+0

có thể trùng lặp của [Làm thế nào tôi có thể viết SQL cho một bảng có cùng tên như một từ khóa được bảo vệ trong MySql?] (Http://stackoverflow.com/questions/10706920/how-can-i-write-sql-for -a-table-that-shares-cùng-tên-như-một-bảo vệ-từ khóa) – Jocelyn

Trả lời

8

Order là từ dành riêng. Kèm theo thứ tự trong backticks nếu bạn định sử dụng nó.

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

bạn đúng về nó là một từ dành riêng nhưng cú pháp SET với câu lệnh INSERT thực sự là hợp lệ. – Cfreak

+0

Lưu ý phụ: Chỉ cần đính kèm tất cả các trường trong backticks, đặc biệt là nếu bạn đang tạo truy vấn này. Nó an toàn hơn. –

+0

Hmm ... Tôi chưa bao giờ sử dụng cú pháp đó ... Tôi vừa kiểm tra tài liệu. +1 cho bạn và câu trả lời đã chỉnh sửa. :-) Cảm ơn! – Buggabill

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

Như Cfreak chỉ ra trong các ý kiến, cú pháp của bạn là hợp lệ. Việc bạn sử dụng từ khóa Đơn hàng chưa thoát là vấn đề.

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

như tôi đã bình luận với mọi người khác. Cú pháp SET hợp lệ trong câu lệnh chèn – Cfreak

+0

@Cfreak, bạn nói đúng. Tôi chưa bao giờ sử dụng cú pháp đó trước đây. Tôi đang sử dụng để MSSQL: P. Cảm ơn, câu trả lời cập nhật – Brandon

2

trật tự là một từ dành riêng trong sql, bạn proably cần phải thoát khỏi cái tên cột:

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