我在php.net上看了评论:
虽然
bindValue()
转义引号但它不会转义为“%”和“_”,因此在使用LIKE
时要小心。如果您不自行转义参数,则充满%%%的恶意参数可以转储整个数据库。 PDO没有提供任何其他逃避方法来处理它。
所以它真的没有逃脱%和_?什么是最好的解决方案?
答案 0 :(得分:2)
正如评论所说,这只是LIKE
查询的问题。
这取决于您的数据库如何逃避这些值。如果正常的反斜杠转义有效(如在MySQL中),则使用:
$like = addcslashes($like, "%_");
或者,最好是懒惰,只是剥掉那些元字符:
$like = strtr($like, "%_", " ");