简单插入查询中的语法错误

时间:2012-12-18 15:58:19

标签: php mysql insert

我正在尝试在PHP中创建一些基本的插入查询,它不断给我一个错误,但我真的不知道为什么,你们可以看看是否有任何错误吗?

    mysql_query("
INSERT INTO itens (nome, data, cliente, link, desc, img) VALUES ($nome,$data,$cliente,$link,$desc,$img)
") or die(mysql_error());

更新

从已删除的OP答案中拉出,代码现在是:

mysql_query("INSERT INTO itens (nome, data, cliente, link, `desc`, img) 
VALUES ($nome,$data,$cliente,$link,$desc,$img)") or die(mysql_error());

错误是:

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 'kl,j)' at line 2

kl和j是我在表单中插入的最后两件事。

2 个答案:

答案 0 :(得分:7)

DESC是一个MySQL预留关键字,您应该使用backtick转发

INSERT INTO itens (nome, data, cliente, link, `desc`, img) 
VALUES ($nome,$data,$cliente,$link,$desc,$img)

您的查询容易被SQL Injection攻击,请花点时间阅读以下有关如何防范它的文章,

答案 1 :(得分:2)

首先 - Escape,Escape,Escape 学习PDO / mysqli和准备好的陈述

第二 - 知道reserved keywords不能用于列名的内容;那些必须使用反引号进行转义。

$sql = sprintf("INSERT INTO itens (nome, data, cliente, link, `desc`, img) VALUES ('%s', '%s', '%s', '%s', '%s', '%s');", 
    mysql_real_escape_string($nome),
    mysql_real_escape_string($data),
    mysql_real_escape_string($cliente),
    mysql_real_escape_string($link),
    mysql_real_escape_string($desc),
    mysql_real_escape_string($img)
);

mysql_query($sql);

第三 - 我认为你在表名中犯了一个拼写错误(itens vs items)。