1

php.netでコメントを読みました:

引用符をエスケープしますがbindValue()、「%」と「_」はエスケープしません。したがって、を使用するときは注意してLIKEください。自分でパラメータをエスケープしないと、%%%でいっぱいの悪意のあるパラメータがデータベース全体をダンプする可能性があります。PDOは、それを処理するための他のエスケープメソッドを提供していません。

それで、それは本当に%と_をエスケープしませんか?これに対する最善の解決策は何でしょうか?

4

1 に答える 1

2

コメントが言うように、それは実際にはLIKEクエリの問題にすぎません。

これらの値をどのようにエスケープする必要があるかは、データベースによって異なります。通常のバックスラッシュエスケープが機能する場合(MySQLの場合のように)、次を使用します。

$like = addcslashes($like, "%_");

あるいは、怠惰になって、それらのメタ文字を取り除くのがおそらく最善です:

$like = strtr($like, "%_", "  ");
于 2011-04-03T02:55:38.150 に答える