Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
php.netでコメントを読みました:
引用符をエスケープしますがbindValue()、「%」と「_」はエスケープしません。したがって、を使用するときは注意してLIKEください。自分でパラメータをエスケープしないと、%%%でいっぱいの悪意のあるパラメータがデータベース全体をダンプする可能性があります。PDOは、それを処理するための他のエスケープメソッドを提供していません。
bindValue()
LIKE
それで、それは本当に%と_をエスケープしませんか?これに対する最善の解決策は何でしょうか?
コメントが言うように、それは実際にはLIKEクエリの問題にすぎません。
これらの値をどのようにエスケープする必要があるかは、データベースによって異なります。通常のバックスラッシュエスケープが機能する場合(MySQLの場合のように)、次を使用します。
$like = addcslashes($like, "%_");
あるいは、怠惰になって、それらのメタ文字を取り除くのがおそらく最善です:
$like = strtr($like, "%_", " ");