Php 类SQL函数
我对Codeigniter上的SQL有问题。 我想看看以字母A开头的客户的名字。。从A到C。。所以A-B-C 我写这段代码:Php 类SQL函数,php,codeigniter,Php,Codeigniter,我对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($filt
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;
if((isset($filtri[“name_from”])和&($filtri[“name_from”])):
$this->db->where(“clienti.nome LIKE”,$filtri[“name_from”]。“%”);
endif;
如果((isset($filtri[“名称到”])和($filtri[“名称到”]):
对于($i=$filtri[“name_from”]++;$i db->或_where(“clienti.nome LIKE”,$i.“%”);
}
endif;
但是当我使用另一个过滤器时,它不起作用……为什么?文档()使用了不同的方法:
如果要控制通配符(%)的位置,可以使用可选的第三个参数。选项为“before”、“after”、“none”和“both”(这是默认值)
因此,您可以尝试:
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;
if((isset($filtri[“name_from”])和&($filtri[“name_from”])):
$this->db->like(“clienti.nome”,$filtri[“name_from”],“after”);
endif;
如果((isset($filtri[“名称到”])和($filtri[“名称到”]):
对于($i=$filtri[“name_from”]++;$i db->或类似(“clienti.nome”,$i,“after”);
}
endif;
既然您使用的是Query Builder,为什么不使用正确的方法来处理like
呢,而不是对一些可能有效或可能无效的内容进行黑客攻击呢?您应该查看$this->db->like()
语法确定,但当我使用另一个筛选器时..比如Date,filter[“name\u from”]打印所有名称。我看不到您的全部代码,只能看到您在此处编写的部分。对于您要求的问题,这是正确的解决方案。您可能不想重构表单或在stackoverflow上创建新问题。
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;