简单的MySQL INSERT错误

时间:2008-11-04 09:52:50

标签: mysql

毫无疑问我在这里遗漏了一些非常简单的东西,但是我无法看到这个查询产生以下错误的问题:

SQL query:

INSERT INTO ads(
    ad_id, author, ad_date, category, title,
    description, condition, price, fullname,
    telephone, email, status, photo, photothumb
)
VALUES (
    NULL , 'justal', '1225790938', 'Windsurf Boards',
    'test', 'test', 'Excellent', '12', 'test',
    'test', 'test', '', '', ''
);

MySQL said: Documentation
#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 ''ad_id', 'author',
'ad_date', 'category', 'title', 'description',
'condition', '' at line 1

有一双新鲜眼睛的人可以发现这个问题吗?

谢谢, 人。

3 个答案:

答案 0 :(得分:3)

你不应该在列名中使用反向刻度而不是单引号吗?

INSERT INTO ads( `ad_id`, `author`, `ad_date`, `category`, `title`, `description`, `condition`, `price`, `fullname`, `telephone`, `email`, `status`, `photo`, `photothumb` )
VALUES (
NULL , 'justal', '1225790938', 'Windsurf Boards', 'test', 'test', 'Excellent', '12', 'test', 'test', 'test', '', '', ''
);

答案 1 :(得分:2)

可能是CONDITION是一个mysql关键字,不允许作为列名。

http://dev.mysql.com/doc/refman/5.1/en/declare-conditions.html

你绝对不需要'或'

答案 2 :(得分:1)

单引号用于字符串文字。在MySQL中,默认情况下,双引号也用于字符串文字,尽管这与标准SQL不兼容,您应该在代码中使用单引号。

对于列名,通常根本不会引用它们。如果你需要 - 并且你不需要你的任何一个 - 那么用反引号(`)引用它们,或者将它设置为严格的ANSI兼容模式(ANSI_QUOTES)并使用双引号。