我想在我的数据库中搜索 mc'd ,但我使用mysql_real_escape_string
。
但没有找到,因为它会输出 mc \\'d
有什么想法吗?
答案 0 :(得分:3)
mysql_real_escape_string
应该返回仅使用一个反斜杠转义的单引号,所以我的猜测是你在php.ini中启用了magic_quotes_gpc。把它关掉,就没事了。
答案 1 :(得分:1)
考虑使用PHP Data Objects代替mysql_query()
。那么你不需要mysql_real_escape_string()
,因为PDO负责内部正确的参数传递。 (如果数据库支持绑定参数,它将使用绑定参数,否则它将为您进行转义。)
从SQL注入的角度来看,这比手工构建原始查询字符串并且必须记住逃避所有内容更安全。参数值与SQL分开给出,因此恶意输入不可能改变查询结构。
答案 2 :(得分:-1)
在数据库中插入时使用addslashes,并在从数据库中提取时使用stripslashes。
并且在你的情况下它向'
添加两个斜杠所以我认为这是由于你的魔术引用。
所以如果关闭魔术引号然后进行搜索会更好。
所以在关闭魔术引用之后,它会给md'c --> md\'c
。
希望这对你有用..