2011-02-06 8 views
0

文字列の意味を維持しながら安全なクエリのために文字列を消去する方法がわかりません。 値の一部にシングルクォートやその他のエスケープ可能な文字が含まれているテーブルを指定します。 real_escape_stringを使用して、これらの値を選択するにはどうすればよいですか?私はmysqliのとそれをきれいにする必要がありますのでMysql Php real_escape_stringで単一引用符をエスケープする

MY_TABLE

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

value's1は、URLから来ている:: をreal_escape_string私のクエリは、この

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

そしてもちろんのように見えることを意味していますこのため、結果は返されません。

この問題に対処するさまざまな戦略は何ですか?

注:ちょうどphpinfo()とmagic_quotes_gpcが「オフ」です。 私はこの値をきれいにする必要がありますか?私は誰かが一度に1つのクエリを許可するだけのSQLインジェクションを行う方法を見ていないのですか?私はちょうど慎重にすぎますか?

+0

のアウト機能を作りたいかもしれません。 http://stackoverflow.com/questions/220437/magic-quotes-in-php –

+0

@Pekkaはreal_escape_stringに\を追加しません '? – andrew

+0

magic_quotes(onの場合)は自動的にバックスラッシュを追加するので、mysql_real_escape_stringは別のものを追加します。私が以下に掲示した方法を使用してください、それはすべてのケースで動作するはずです(magic_quotes onかどうか) –

答えて

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

あなたはおそらく上のマジッククオートを持っているこの

+0

@Damien Pirsy私はちょうどチェックし、魔法の引用符はオフになっています。 – andrew

+0

このスニペットはあなたにもかかわらずバックスラッシュを返しますか? –

+0

私はmysqli :: real_escape_stringを使うと、バックスラッシュが私のクエリに追加されます。 – andrew

関連する問題