php单引号搜索

时间:2010-01-18 07:23:51

标签: php

我想在我的数据库中搜索 mc'd ,但我使用mysql_real_escape_string

但没有找到,因为它会输出 mc \\'d

有什么想法吗?

3 个答案:

答案 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

希望这对你有用..