SQL函数喜欢



我在Codeigniter上使用SQL有问题。 我想看看以字母A开头的客户的名字。从A到C..所以 A-B-C

我写了这段代码:

if ((isset($filtri["name_from"])) && ($filtri["name_from"])) :
$this->db->where("clienti.nome LIKE ",$filtri["name_from"]."%");
endif;  
if ((isset($filtri["name_to"])) && ($filtri["name_to"])) :
for($i = $filtri["name_from"]++; $i <= $filtri["name_to"]; $i++){
$this->db->or_where("clienti.nome LIKE ",$i."%");
}
endif;

但是当我使用另一个过滤器时不起作用...为什么?

文档 (https://codeigniter.com/user_guide/database/query_builder.html( 使用不同的方法:

如果要控制通配符 (%( 的放置位置,可以使用可选的第三个参数。您的选项是"之前"、"之后"、"无"和"两者"(这是默认值(。

$this->db->like('title', 'match', 'before');  // Produces: WHERE `title` LIKE '%match' ESCAPE '!'
$this->db->like('title', 'match', 'after');   // Produces: WHERE `title` LIKE 'match%' ESCAPE '!'
$this->db->like('title', 'match', 'none');    // Produces: WHERE `title` LIKE 'match' ESCAPE '!'
$this->db->like('title', 'match', 'both');    // Produces: WHERE `title` LIKE '%match%' ESCAPE '!'

因此,您可以尝试:

if ((isset($filtri["name_from"])) && ($filtri["name_from"])) :
$this->db->like("clienti.nome",$filtri["name_from"],"after");
endif;  
if ((isset($filtri["name_to"])) && ($filtri["name_to"])) :
for($i = $filtri["name_from"]++; $i <= $filtri["name_to"]; $i++){
$this->db->or_like("clienti.nome",$i,"after");
}
endif;

相关内容

  • 没有找到相关文章

最新更新