这两种通过预处理语句绑定LIKE
子句的模式的方法之间是否有任何功能差异?
在客户端构建模式:
$stmt = $db->prepare('SELECT * FROM foo WHERE bar LIKE ?');
$stmt->bindValue(1, '%' . $searchTerm . '%');
在SQL中构建模式:
$stmt = $db->prepare("SELECT * FROM foo WHERE bar LIKE CONCAT('%', ?, '%')");
$stmt->bindValue(1, $searchTerm);
此示例使用PHP的PDO适配器,但这并非特定于PHP,PDO或任何特定客户端。任何语言的任何客户都应该得到相同的结果。如果情况并非如此,并且存在差异,请同时告诉我。
(这是一个在不同背景下出现的争论点,我正在寻找官方答案.IMO和AFAIK两种方法产生相同的结果,而前者对我来说似乎更加明智,尽管如此#39;可以说主要是风格问题。)