我为一个小问题挣扎了一段时间。它已经存在多年了,但它只是一个恼人的问题,而不是一个严重的问题,我只是努力解决这个问题。但现在我想知道是否有人能帮我。我已经做了一些谷歌,但没有成功。
如果我在php文件中从html textarea中做表单发布,如下所示:
<form action="http://action.com" method="post">
<textarea name="text"><a href="http://google.com">google's site</a></textarea>
</form>
当然还有提交按钮等等。
值是问题所在:<a href="http://google.com">google's site</a>
文本区域的值有“(引号)和'(Apostrophe)。
为了将其保存在mysql_database中,我执行以下操作:
$result = mysql_query("INSERT INTO `table` (`row1`) VALUES ('".$_POST['text']."') ") or die(mysql_error());
现在我得到mysql错误:
您的SQL语法出现了错误;请检查与您的MySQL服务器版本对应的手册,以获得在第1行使用near‘'s site’的正确语法。
发布于 2011-01-11 16:27:49
在向数据库中添加用户提供的值时,至少要始终使用mysql_real_escape_string。您应该查看绑定参数或mysqli,以便您的查询变成:
INSERT INTO `table` (`row1`) VALUES (?)
然后呢?将被清除输入后的实际值替换。
在您的案例中使用:
$result = mysql_query("INSERT INTO `table` (`row1`) VALUES ('".mysql_real_escape_string($_POST['text'])."') ") or die(mysql_error());
阅读SQL注入。值得尽快做正确的事!
发布于 2011-01-11 16:26:19
发布于 2012-09-26 05:24:14
可以使用加号()函数。它引用带有斜线的字符串。所以,当你在你的领域中添加任何撇号时,它将对你非常有用。
$result = mysql_query("INSERT INTO `table` (`row1`) VALUES ('".addslashes($_POST['text'])."') ") or die(mysql_error());
https://stackoverflow.com/questions/4659879
复制相似问题