zend db选择像通配符

时间:2013-01-27 12:23:01

标签: php zend-framework

试图在使用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引用该值并将其替换为表达式中的问号(“?”)符号。

告诉不够

1 个答案:

答案 0 :(得分:19)

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

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

或:

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