我尝试使用PDO::quote
来转义LIKE
表达式中的字符串,因此用户字符串不能像这样被包围:
LIKE "%userStringToEscape%"
有办法吗?
$var = "%userStringToEscape%";
$var = $stmt->quote($var);
$sql = "SELECT * FROM table WHERE field LIKE $var";
同样适用于预处理语句
使用substr($db->quote($var), 1, -1)
说真的,不要。你最终会遇到比开始时更大的问题。
清洁的解决方案当然是$db->quote('%'.$var.'%')
Just do:
$like = $pdo->quote("%{$userStringToEscape}%");
$sql = "SELECT * FROM field LIKE {$like}";
http://php.net/manual/en/pdo.quote.php