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程序设计有所帮助。