### 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 );
}
~~~