3

试图在 zend db 的选择中查找有关“like”子句的一些信息,但没有成功。问题是不清楚如何在 LIKE 子句附近使用通配符“%”

我最初使用并在网络上数百个地方推荐的坏主意是

 $db->select()
    ->where('text LIKE "%'.$query.'%"');

我想,正确的答案应该是这样的:

 $db->select()
    ->where('text LIKE ?', $query);

但没有使用通配符

我尝试了几种解决方案,但它们似乎都不起作用:

$db->select()
    ->where('text LIKE ?', '%$query%');
$db->select()
    ->where('text LIKE ?', '%{$query}%');

任何人都可以指出文档,或为此提供一个好的解决方案吗?

where() 方法的第二个参数是可选的。它是一个替换到表达式中的值。Zend_Db_Select 引用该值并将其替换为表达式中的问号(“?”)符号。

说的不够

4

1 回答 1

22

% 符号必须是绑定到查询的变量的一部分。如果您使用双引号而不是单引号,您的第二个示例将起作用。所以你可以这样做:

$query = '%'.$query.'%';
$db->select()
   ->where('text LIKE ?', $query);

或者:

$db->select()
   ->where('text LIKE ?', "%$query%");
于 2013-01-27T12:25:58.200 回答