可能重复:
PHP mysql_real_escape_string() -> stripslashes() leaving multiple slashes
我有一个系统接受用户对调查的输入并将答案保存到MySQL数据库中
在将它放入此数据库之前,它会通过mysql_real_escape_string()
运行它以验证它不是注入不满意。
不幸的是,当我在文本框中将此内容输出到我的客户端时(就像输入的那样)引用单引号/
\
...所有都被转义 - 我知道我知道我要求它,但是我不能像这样给出产品 - 我如何扭转这些产品而不会有失去输入人们输入" 2 \ 3,1 / 2" ......这样的东西的风险。
有更好的消毒方法吗?
答案 0 :(得分:2)
有一种更好的方法可以确保您的输入被消毒。完全不要逃避,而是使用prepared queries代替PDO。
答案 1 :(得分:0)
如果你的MySQL字符串有myfield="Stafford\'s webhost sucks"
之类的东西,那么MySQL知道反斜杠是用作转义字符而不是反斜杠,除非它是双转义的。
如果您在数据库中看到应该是转义字符的反斜杠,则表示您的字符串被多次转义。这可能是在您的代码中,或者在您的情况下,已启用已弃用的魔术引号功能。魔术引号可以通过php.ini关闭:https://stackoverflow.com/a/1201003/281469