将 PHP 代码粘合到多个函数中

Glue a redondant PHP code into several functions

提问人:user7370387 提问时间:1/18/2017 最后编辑:ddbuser7370387 更新时间:1/18/2017 访问量:49

问:

我有这些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."";
}

我需要它们在几个不同的函数中,它们总是严格相同,但需要输入......有没有办法简单地粘一个“关键字”,以便在每次我需要它到任何函数中时添加此过滤器?我不知道如何以一种非常简单的方式做到这一点。 现在,我被迫在我的每个函数中重写它们!最后真的很丑!

我不能将它们包含在变量中,因为它需要被解释。我javascript我会做一个像eval(“varFilters”)这样的函数;

编辑:

我试试这个:

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

}

B我需要把所有东西都放在一行上,这并不是真正的实用

我打算在我的其他函数中注入$filtres并使用 eval($filtres),这是正确的方法吗?

PHP SQL 过滤器

评论


答:

1赞 Philipp 1/18/2017 #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);

评论

0赞 user7370387 1/18/2017
你好,啊,是的,这是一个好主意,我今晚会尝试谢谢!
0赞 user7370387 1/18/2017
是的,它工作得很好,非常感谢!它将改变我的生活!你太好了