2011-02-06 66 views
0

我无法弄清楚如何在保留字符串含义的同时清理我的字符串以进行安全查询。 给定表中的某些值具有单引号或其他易变字符的表。我如何使用real_escape_string并仍然选择这些值?Mysql Php使用real_escape_string转义单引号

MY_TABLE

Col1  Col2 
----------------- 
1  value's1 
2  value's2 

value's1是URL中来,所以我有mysqli的清洗它:: real_escape_string 这意味着我的查询看起来像这样

SELECT Col1,Col2 FROM my_table WHERE Col2 = 'value\'s1' 

,当然还有因为这个,我没有得到任何结果。

处理这个问题的各种策略是什么?

注意:刚做了phpinfo()和magic_quotes_gpc是'off'。 是否需要清除此值我不明白某人在一次只允许一个查询时有人可以执行sql注入?我只是过于谨慎?

+0

的你可能在有魔术引号。 http://stackoverflow.com/questions/220437/magic-quotes-in-php – 2011-02-06 19:39:05

+0

@Pekka不会real_escape_string添加\''? – andrew 2011-02-06 19:45:25

回答

1
if(get_magic_quotes_gpc()) 
{ 
    $string = stripslashes($string); 
      $string = mysqli_real_escape_string($string); 
} 
else 
{ 
    $string = mysqli_real_escape_string($string); 
} 

你可能想使一个功能出这个