0

文字列の意味を維持しながら、安全なクエリのために文字列をきれいにする方法を理解するのに苦労しています。一部の値に一重引用符またはその他のエスケープ可能な文字が含まれているテーブルを考えます。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 は「オフ」です。この値を消去する必要がありますか? PHP で一度に 1 つのクエリしか許可されていない場合に、SQL インジェクションを行う方法がわかりません。私が用心しすぎているだけですか?

4

1 に答える 1

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

これから関数を作りたいと思うかもしれません

于 2011-02-06T19:45:30.683 に答える