以条件作为参数的函数

h5qlskok  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(351)

我遇到过这个函数,我想使用,但我想简短的描述它。我尝试了很多方法,但没有成功。我试图创建第三个参数,但没有工作。有人能帮忙吗?

public function getRows($conditions = array()){
        $sql = 'SELECT ';
        $sql .= array_key_exists("select",$conditions)?$conditions['select']:'*';
        $sql .= ' FROM '.$this->tblName;
        if(array_key_exists("where",$conditions)){
            $sql .= ' WHERE ';
            $i = 0;
            foreach($conditions['where'] as $key => $value){
                $pre = ($i > 0)?' AND ':'';
                $sql .= $pre.$key." = '".$value."'";
                $i++;
            }
        }

        if(array_key_exists("order_by",$conditions)){
            $sql .= ' ORDER BY '.$conditions['order_by']; 
        }

        if(array_key_exists("start",$conditions) && array_key_exists("limit",$conditions)){
            $sql .= ' LIMIT '.$conditions['start'].','.$conditions['limit']; 
        }elseif(!array_key_exists("start",$conditions) && array_key_exists("limit",$conditions)){
            $sql .= ' LIMIT '.$conditions['limit']; 
        }

        $result = $this->db->query($sql);

        if(array_key_exists("return_type",$conditions) && $conditions['return_type'] != 'all'){
            switch($conditions['return_type']){
                case 'count':
                    $data = $result->num_rows;
                    break;
                case 'single':
                    $data = $result->fetch_assoc();
                    break;
                default:
                    $data = '';
            }
        }else{
            if($result->num_rows > 0){
                while($row = $result->fetch_assoc()){
                    $data[] = $row;
                }
            }
        }
        return !empty($data)?$data:false;
    }
f2uvfpb9

f2uvfpb91#

您可以向 $conditions 在下面的代码中传入并检测它的数组。。。

if(array_key_exists("order_by",$conditions)){
    $sql .= ' ORDER BY '.$conditions['order_by']; 
    if(array_key_exists("sort_order",$conditions)){
         $sql .= ' '.$conditions['sort_order']; 
}

所以当你调用它时,添加一个“sort\u order”元素。。。

$conditions['where'] = array( 'id' => $_POST['id']);
$conditions['order_by'] = 'id';
$conditions['sort_order'] = 'desc';

相关问题