我浏览了很多不同的网站,我真的不想向你们发送垃圾邮件。但我真的很绝望,没有其他办法。所以这里...
我试图让人们在我的网站上发布内容。我观看的教程告诉我使用 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));
我应该做什么来解决这个问题?请帮助我。
-山姆
最佳答案
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()
。
关于php - htmlspecialchars() 和 mysql_query() 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20926725/