PHP实现的oracle分页函数实例
本文实例讲述了PHP实现的oracle分页函数。分享给大家供大家参考,具体如下:
mysql有limit,分页的时候,我们可以用limit30,40,而oracle没有limit,用其他的方法来代替--rownum.
一、底层方法
/** *数据连接 */ functionconnect($db_user,$db_pwd,$db_name,$db_nls) { $this->dbh=oci_connect($db_user,$db_pwd,$db_name,$db_nls); } functiongetall($query,$start=0,$rows=-1) { $this->dbh=emptyempty($this->dbh)?$this->connect():$this->dbh; $this->sth=oci_parse($this->dbh,$query); oci_execute($this->sth,OCI_DEFAULT)or$this->error($this->sth,$query); oci_fetch_all($this->sth,$res,$start,$rows,OCI_FETCHSTATEMENT_BY_ROW+OCI_ASSOC); return$res; } /** *获取分页数 * *$querystring查询语句 *$totalint总条数 *$pageint页数 *$rowsint每页显示数 *@returninteger总行数 */ functiongetpage($query,$total,$page,$rows=VAR_PAGENAV_ROWS) { $start_row=($page-1)*$rows+1; $start_row=$start_row>$total?1:$start_row; $end_row=$start_row+$rows-1; $end_row=$end_row>$total?$total:$end_row; $query="SELECT*FROM(SELECTROWNUMasrow_num,r.*FROM($query)rWHEREROWNUM<=$end_row)WHERE$start_row<=row_num"; return$this->getall($query); } /** *获取一个查询的总行数 * *$string$sql查询语句 * *returninteger总行数 */ functiongetcount($sql){ $subSQL='selectcount(*)'.stristr($sql,'from'); return$this->getone($subSQL); } functiongetone($query) { $row=$this->getrow($query); if(is_array($row)) $one=current($row); else $one=''; unset($row); return$one; } functiongetrow($query) { if(false===stripos($query,'COUNT(')){ if(false===stripos($query,'WHERE')){ $query.='WHEREROWNUM=1'; }else{ $query.='ANDROWNUM=1'; } } $result=$this->getall($query,0,1); if(emptyempty($result)) $row=array(); else $row=$result[0]; unset($result); return$row; }
主要二个方法我写一点注释
二、调用方法
$total=$this->db->getcount($sql); $result=$this->db->getpage($sql,$total,$page,$page_number);
上面只是贴出部分代码,也是最核心的。
更多关于PHP数据库操作相关内容感兴趣的读者可查看本站专题:《php常见数据库操作技巧汇总》、《PHP基于pdo操作数据库技巧总结》及《php+mysql数据库操作入门教程》。
希望本文所述对大家PHP程序设计有所帮助。