首页 > 解决方案 > 以条件为参数的函数问题

问题描述

我遇到了我想使用的这个功能,但我想把它简称为 DESC。我尝试了很多方法都没有成功。我试图创建第三个参数,但这不起作用。请问有人可以帮忙吗?

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;
    }

标签: phpmysql

解决方案


您可以向传入的数组添加一个额外的“参数”$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_order'元素......

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

推荐阅读