我让用户输入其名称,例如:O'riley
。
在将这些数据输入MySQL数据库之前,我先运行mysql_real_escape_string
。
问题是,当我然后选择此数据以供显示和以后使用时,它显示为:O\'riley
。
显然,这是预期的操作。我想知道的是,是否有某种方式可以确保将其存储在数据库中(仍然安全地转义可能的恶意代码),这样我每次在整个过程中调用数据时都不必在输出上使用strip_slashes()
。网络应用程序?还是我在这里想念什么?
谢谢。
更新
请引用Deceze答案中的评论。
最佳答案
不,将字符串存储为“O\'riley”不是预期的操作;它只能在查询中转义,而不能以这种方式存储。我猜想PHP通过Magic Quotes放在反斜杠中,并且您再次对其进行了转义以使其保持不变。
Disable Magic Quotes。