php - 关于 mysql_real_escape_string 和 strip_slashes 的混淆

标签 php mysql mysql-real-escape-string stripslashes

我让用户输入他们的名字,如:O'riley

在将此数据输入 MySQL 数据库之前,我运行 mysql_real_escape_string

问题是,当我随后选择此数据进行显示并稍后使用时,结果显示为:O\'riley

显然,这是预期的操作。我想知道的是,是否有某种方法可以确保我可以将它存储在数据库中(仍然安全地转义可能的恶意代码),这样我就不必在输出上使用 strip_slashes()每次我在整个网络应用程序中调用数据?或者,我在这里遗漏了什么吗?

谢谢。

更新 请引用 Deceze 回答中的评论。

最佳答案

不,将字符串存储为“O\'riley”不是预期的操作;它应该只在查询中转义,而不是这样存储。我猜 PHP 通过 Magic Quotes 放入反斜杠, 然后你再次逃脱它以使其粘住。

Disable Magic Quotes .

关于php - 关于 mysql_real_escape_string 和 strip_slashes 的混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9286432/

相关文章:

php - 如何从 'really' 检测数据库中的整数?

php - Symfony2 中的 ManyToOne、oneToMany 关联的结果不起作用

php - 更改下拉列表时使用ajax过滤laravel中的数据

php - Mysql_real_escape_string...还有其他地方的自动设置吗?

php - 需要 $_SESSION 变量的 mysql_real_escape_string() 吗?

php - 使用 _get 从隐藏输入中获取 id 并将其插入数据库

javascript - Prisma 迁移跳过插入

mysql - 如何逐个获取数据库(oracle)表意味着首先它显示第一行,然后在提交时它将显示下一行,依此类推

php - 获取给定的两个 mysql 时间段之间的几个时间段的计数

php - 当我将代码移动到另一台服务器时,mysql_real_escape_string 停止工作