【问题标题】:Glue a redondant PHP code into several functions将多余的 PHP 代码粘贴到多个函数中
【发布时间】:2017-06-02 21:47:34
【问题描述】:

我有这些 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

}

但是我需要将所有内容放在一条线上,这并不是真正的实用

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

【问题讨论】:

    标签: php sql filter


    【解决方案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);
    

    【讨论】:

    • 您好,是的,这是个好主意,我今晚试试,谢谢!
    • 是的,它工作得很好,非常感谢!它会改变我的生活!你真好
    猜你喜欢
    • 2012-05-01
    • 2020-07-11
    • 1970-01-01
    • 2019-03-17
    • 1970-01-01
    • 2013-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多