SQL语法错误 - 为什么?

时间:2012-02-22 22:17:38

标签: php sql syntax

我已经查看了这个代码数十亿次,并且看不出它有什么问题。但是它给了我一条消息,“错误:你的SQL语法有错误;请查看与你的MySQL服务器版本相对应的手册,以便在'when,name,reporter,contacts,advice,remark)附近使用正确的语法.VALUES ('我再来','我','在第1行'

请帮忙!

对不起,对不起,我是如此Sooooooory!急于找到工作,我粘贴了错误的代码。这是正确的代码行。

$sql="INSERT INTO one_on_one_reports (whenever, name, reporter, contacts, suggestions, remarks) VALUES ('$_POST[whenever]', '$_POST[name]', '$_POST[reporter]', '$_POST[contacts]', '$_POST[suggestions]', '$_POST[remarks]')";

我在驾驶之间。然后再跑了。但我再次为错误的粘贴道歉。我会考虑以后的注射防护。如果这有任何区别,则此文件位于受密码保护的文件夹中。

布鲁斯

5 个答案:

答案 0 :(得分:6)

看起来错误不是来自您期望的查询。错误中提到的字段名称未列出:

when, name, reporter, contacts, suggestions, remarks

错误非常简单,WHEN是保留关键字,您需要将其转义。

`when`, name, reporter, contacts, suggestions, remarks

说到转义,你不是太强大了,在数据上使用适当的转义函数来避免SQL注入。

答案 1 :(得分:3)

WHENreserved word in mySQL.

重命名列,或将其包装在反引号中:

`WHEN`

答案 2 :(得分:2)

答案 3 :(得分:1)

尝试

$name = mysql_real_escape_string($_POST[name]);
$vote = mysql_real_escape_string($_POST[vote]) ;
$comments = mysql_real_escape_string($_POST[comments]) ;

$sql="INSERT INTO ms_poll (name, vote, comments) VALUES ('$name', '$vote', '$comments')";

答案 4 :(得分:0)

尝试在POST参数周围加上大括号 - 当然要对它们进行消毒

像这样

$sql="INSERT INTO ms_poll (name, vote, comments) VALUES ('{$_POST['name']}', '{$_POST['vote']}', '{$_POST['comments']}')";

要清理传入的数据,我建议使用本机方法NOT addslashes()(如果你是mysql那么可能是mysql_real_escape_string()或者更好的想法是使用改进的扩展,这意味着使用mysqli_real_escape_string())