我正在尝试在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是我在表单中插入的最后两件事。
答案 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
)。