我已经有了这些PHP过滤器(将AND粘贴到SQL选择中):
if($data->secteur){
$requete .= " AND etude.Secteur = '".$data->secteur."'";
}
if($data->region){
$requete .= " AND etude.region = '".$data->region."'";
}
if($data->ca_min){
$requete .= " AND etude.ca >= ".$data->ca_min."";
}
if($data->ca_max){
$requete .= " AND etude.ca <= ".$data->ca_max."";
}
if($data->revenus_min){
$requete .= " AND Zone.Revenue_Zone >=".$data->revenus_min."";
}
if($data->revenus_max){
$requete .= " AND Zone.Revenue_Zone <=".$data->revenus_max."";
}
我在几个不同的功能中需要它们,它们总是严格相同但需要输入....有没有办法简单地粘贴一个&#34;关键字&#34;每次我需要它添加到任何功能?我不知道如何以一种非常简单的方式做到这一点。 现在,我被迫在我的每个功能中重写它们!最后它真的很难看!
我无法将它们包含在变量中,因为需要对其进行解释。我javascript我会做一个像eval这样的函数(&#34; varFilters&#34;);
编辑:
我试试这个:
function filtres(){
$filtres = "
if($data->secteur){
$requete .= " AND etude.Secteur = '".$data->secteur."'";
}
if($data->region){
$requete .= " AND etude.region = '".$data->region."'";
}
if($data->ca_min){
$requete .= " AND etude.ca >= ".$data->ca_min."";
}
if($data->ca_max){
$requete .= " AND etude.ca <= ".$data->ca_max."";
}
if($data->revenus_min){
$requete .= " AND Zone.Revenue_Zone >=".$data->revenus_min."";
}
if($data->revenus_max){
$requete .= " AND Zone.Revenue_Zone <=".$data->revenus_max."";
}
";
return $filtres
}
我需要把所有东西都放在一条线上,这不是真的很好看
我打算在我的其他功能中注入$ filtres并使用eval($ filtres),这是正确的方法吗?
答案 0 :(得分:1)
不确定,如果我弄错了,但看起来,你只需要创建一个函数,它将$data
作为参数并从中构建你的查询字符串。
function filter($data) {
$requete = '';
if($data->secteur){
$requete .= " AND etude.Secteur = '".$data->secteur."'";
}
if($data->region){
$requete .= " AND etude.region = '".$data->region."'";
}
if($data->ca_min){
$requete .= " AND etude.ca >= ".$data->ca_min."";
}
if($data->ca_max){
$requete .= " AND etude.ca <= ".$data->ca_max."";
}
if($data->revenus_min){
$requete .= " AND Zone.Revenue_Zone >=".$data->revenus_min."";
}
if($data->revenus_max){
$requete .= " AND Zone.Revenue_Zone <=".$data->revenus_max."";
}
return $requete;
}
稍后再使用它,只需使用$ data var
调用它$requete .= filter($data);