🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### pageBySql **动态构建某一页select sql并执行** **参数** \* 1.$sql:传入的基本select语句 \* 2.$param:构造sql所需参数 \* 返回: Array 二维数组.第一维是所有记录,第二维是某条记录的字段数组 ~~~ function pageBySql($sql) { //构建group by $groupBy = $this->groupBy; $countPos=strpos ( $sql, "@" ); //拼装搜索条件 $sql = $this->createQuery ( $sql, $this->searchArr ); if(empty($countPos)){ $countPos=strpos ( $sql, "from" ); }else{ $sql=str_replace ( "@", "", $sql ); } if (isset ( $groupBy ) && $groupBy != "" && $groupBy != "id") { $groupBy = " group By $groupBy "; $countsql = "select 0 " . substr ( $sql, $countPos ); //$countsql = $this->createQuery ( $countsql, $this->searchArr ); $countsql = "select count(0) as num from ( " . $countsql . " " . $groupBy . " ) as t"; } else { //构造获取记录数sql $countsql = "select count(0) as num " . substr ( $sql, $countPos ); //$countsql = $this->createQuery ( $countsql, $this->searchArr ); //TODO;待优化,无需执行两次createQuery } //print($countsql); $this->count = $this->queryCount ( $countsql ); //拼装聚合函数 $sql .= $groupBy; //构建排序信息 if(!empty($this->sort)){ $asc = $this->asc ? "DESC" : "ASC"; //echo $this->asc; $sql .= " order by " . $this->sort . " " . $asc; } $this->listSql=$sql; //print($sql); //构建获取记录数 $sql .= " limit " . $this->start . "," . $this->pageSize; //echo $sql; return $this->_db->getArray ( $sql ); } ~~~