php任意数量条件查询函数

在做搜索的时候,遇到一个这样的问题,类似于这样的问题,如下图:

有这样一个表单,用户可选的填入”姓名”,”星座”,”爱好”表单,点击提交按钮,可以根据用户填入的值自动构造SQL语句,某项不填写,查询时会自动跳过该字段.

 

姓名   星座   爱好   提交

 

之前也遇到过类似的问题,但是处理的方法很麻烦,今天又遇到同样的问题,于是想了一个比较简便的方法,我封装了一个函数,给大家分享一下,这个函数可以根据传入的数据不同,自动的构造合适的SQL语句的where条件.

函数体:

/**
*
*   @array  array{字段=>值,字段=>值}
*
**/
    function where($array) {
        $where='';
        foreach($array as $field=>$value){
            if($value != '' && $where == ''){
                $where=' where '. '`' .$field. '`' .'=\''.$value.'\'';
            }elseif($value != ''){
                $where .="and `{$field}` = '{$value}'";
            }
        }
        return $where;
    }

调用实例1:

    //所有字段均填写
    $array=array(
        'name'=>'李杨',
        'sign'=>'巨蟹',
        'like'=>'编程'
    );
    $sql = 'select * from table'.where($array);
    echo $sql;

打印出的SQL语句为:select * from table where `name`=’李杨’ and `sign` = ‘巨蟹’ and `like` = ‘编程’

 

调用实例2:

    //填写部分字段
    $array=array(
        'name'=>'李杨',
        'sign'=>'', //该字段没有填写,接收的值为''
        'like'=>'编程'
    );
    $sql = 'select * from table'.where($array);
    echo $sql;

打印出来的SQL语句为:select * from table where `name`=’李杨’ and `like` = ‘编程’

 

该函数只能处理判断条件为”=”的SQL,我也找找思路,后续完善一下,如果你有思路的话,欢迎留言.