php - htmlspecialchars() 和 mysql_query() 的问题

标签 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));

我应该做什么来解决这个问题?请帮助我。

-山姆

最佳答案

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/

相关文章:

php - 当我使用函数 htmlspecialchars 时,array_walk_recursive 无法工作?

php - htmlspecialchars() : Invalid multibyte sequence in argument

php - 替换 sublime text 中类和第一个函数之间所有出现的 $ 符号

php - Vim - 在启用语法突出显示的大型 PHP 文件上更改为正常模式很慢

php - 正则表达式取值在括号 "()"之间?

php - 第 1 行的 MySql 语法错误

mysql - 如何在 Web 应用程序中安全地存储邮件服务器的密码

php - Wordpress 的自定义用户字段 - 最好的解决方案是什么?

mysql - MySQL 是否通过允许选择不属于 group by 子句的列来打破标准?

php - Laravel htmlspecialchars() 期望参数 1 是字符串,我的项目中给出的对象?