我看了很多不同的网站,我真的不想发垃圾邮件。但我真的很绝望,无处可去。所以这里......
我想让人们在我的网站上发布内容。我观看的教程告诉我使用htmlspecialchars(),以便人们可以发布诸如大于/小于标志和特殊符号之类的东西,而不会破坏任何东西。但是每当我的mysql_query()遇到单引号或双引号时,它都会抛出此错误:
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 't do this. I won' at line 1
这是我的相应代码:
$sql = mysql_query("INSERT INTO stories (title, content, username, date_posted) VALUES ('$title', '$content', '$un', now())") or die(mysql_error());
这是我使用htmlspecialchars()的地方:
$content = $_POST['content'];
$content = nl2br(htmlspecialchars($content));
我应该怎么做才能解决这个问题?请帮帮我。
萨姆
答案 0 :(得分:1)
htmlspecialchars()
对字符串中的HTML实体进行编码,如:
&
(取自PHP wiki)但是,SQL可能不喜欢某些编码的字符,因此您必须mysql_real_escape_string()
$content
。
请记住,自PHP 5.5.0起不推荐使用MySQL,因此我建议您使用MySQLi或PDO。
有关详细信息:http://php.net/mysql_real_escape_string
为了让您在加载后再次使用正确的HTML编写内容,您必须使用htmlspecialchars_decode()
。