htmlspecialchars()和mysql_query()的问题

时间:2014-01-04 21:03:22

标签: php mysql htmlspecialchars

我看了很多不同的网站,我真的不想发垃圾邮件。但我真的很绝望,无处可去。所以这里......

我想让人们在我的网站上发布内容。我观看的教程告诉我使用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));

我应该怎么做才能解决这个问题?请帮帮我。

萨姆

1 个答案:

答案 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()