zend db选择像通配符

And*_*Zee 3 php zend-framework

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

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

 $db->select()
    ->where('text LIKE "%'.$query.'%"');
Run Code Online (Sandbox Code Playgroud)

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

 $db->select()
    ->where('text LIKE ?', $query);
Run Code Online (Sandbox Code Playgroud)

但是没有使用通配符

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

$db->select()
    ->where('text LIKE ?', '%$query%');
$db->select()
    ->where('text LIKE ?', '%{$query}%');
Run Code Online (Sandbox Code Playgroud)

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

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

说不够

Tim*_*ain 20

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

$query = '%'.$query.'%';
$db->select()
   ->where('text LIKE ?', $query);
Run Code Online (Sandbox Code Playgroud)

要么:

$db->select()
   ->where('text LIKE ?', "%$query%");
Run Code Online (Sandbox Code Playgroud)

  • 不同之处在于变量不会被单引号字符串替换,因此`'%$ query%'`意味着文字字符串,而PHP解析器将解析`"%$ query%"`并将`$ query`替换为该变量的内容. (4认同)