mysql_real_escape_string逆转?

时间:2012-10-22 01:58:41

标签: php mysql mysqli

  

可能重复:
  PHP mysql_real_escape_string() -> stripslashes() leaving multiple slashes

我有一个系统接受用户对调查的输入并将答案保存到MySQL数据库中 在将它放入此数据库之前,它会通过mysql_real_escape_string()运行它以验证它不是注入不满意。

不幸的是,当我在文本框中将此内容输出到我的客户端时(就像输入的那样)引用单引号/ \ ...所有都被转义 - 我知道我知道我要求它,但是我不能像这样给出产品 - 我如何扭转这些产品而不会有失去输入人们输入" 2 \ 3,1 / 2" ......这样的东西的风险。

有更好的消毒方法吗?

2 个答案:

答案 0 :(得分:2)

有一种更好的方法可以确保您的输入被消毒。完全不要逃避,而是使用prepared queries代替PDO

答案 1 :(得分:0)

如果你的MySQL字符串有myfield="Stafford\'s webhost sucks"之类的东西,那么MySQL知道反斜杠是用作转义字符而不是反斜杠,除非它是双转义的。

如果您在数据库中看到应该是转义字符的反斜杠,则表示您的字符串被多次转义。这可能是在您的代码中,或者在您的情况下,已启用已弃用的魔术引号功能。魔术引号可以通过php.ini关闭:https://stackoverflow.com/a/1201003/281469