绑定LIKE模式值,两种不同的方法

时间:2016-02-19 19:34:16

标签: mysql prepared-statement sql-like

这两种通过预处理语句绑定LIKE子句的模式的方法之间是否有任何功能差异?

  1. 在客户端构建模式:

    $stmt = $db->prepare('SELECT * FROM foo WHERE bar LIKE ?');
    $stmt->bindValue(1, '%' . $searchTerm . '%');
    
  2. 在SQL中构建模式:

    $stmt = $db->prepare("SELECT * FROM foo WHERE bar LIKE CONCAT('%', ?, '%')");
    $stmt->bindValue(1, $searchTerm);
    
  3. 此示例使用PHP的PDO适配器,但这并非特定于PHP,PDO或任何特定客户端。任何语言的任何客户都应该得到相同的结果。如果情况并非如此,并且存在差异,请同时告诉我。

    (这是一个在不同背景下出现的争论点,我正在寻找官方答案.IMO和AFAIK两种方法产生相同的结果,而前者对我来说似乎更加明智,尽管如此#39;可以说主要是风格问题。)

0 个答案:

没有答案