我已经查看了这个代码数十亿次,并且看不出它有什么问题。但是它给了我一条消息,“错误:你的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]')";
我在驾驶之间。然后再跑了。但我再次为错误的粘贴道歉。我会考虑以后的注射防护。如果这有任何区别,则此文件位于受密码保护的文件夹中。
布鲁斯
答案 0 :(得分:6)
看起来错误不是来自您期望的查询。错误中提到的字段名称未列出:
when, name, reporter, contacts, suggestions, remarks
错误非常简单,WHEN是保留关键字,您需要将其转义。
`when`, name, reporter, contacts, suggestions, remarks
说到转义,你不是太强大了,在数据上使用适当的转义函数来避免SQL注入。
答案 1 :(得分:3)
答案 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())