PHP实现的oracle分页函数实例


Posted in PHP onJanuary 25, 2016

本文实例讲述了PHP实现的oracle分页函数。分享给大家供大家参考,具体如下:

mysql有limit,分页的时候,我们可以用limit 30,40,而oracle没有limit,用其他的方法来代替--rownum.

一、底层方法

/**
 * 数据连接
 */
function connect($db_user, $db_pwd, $db_name, $db_nls)
{
 $this->dbh = oci_connect($db_user, $db_pwd, $db_name, $db_nls);
}
function getall($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;
}
/**
* 获取分页数
*
* $query  string   查询语句
* $total  int    总条数
* $page  int    页数
* $rows  int    每页显示数
* @return integer  总行数
*/
function getpage($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 ( SELECT ROWNUM as row_num, r.* FROM ( $query ) r WHERE ROWNUM <= $end_row ) WHERE $start_row <= row_num";
 return $this->getall($query);
}
/**
* 获取一个查询的总行数
*
* $string $sql 查询语句
*
* return integer 总行数
*/
function getcount($sql){
 $subSQL = 'select count(*) '.stristr($sql, 'from');
 return $this->getone($subSQL);
}
function getone($query)
{
 $row = $this->getrow($query);
 if (is_array($row))
 $one = current($row);
 else
 $one = '';
 unset($row);
 return $one;
}
function getrow($query)
{
 if (false === stripos($query, 'COUNT(')) {
 if (false === stripos($query, 'WHERE')) {
 $query .= ' WHERE ROWNUM = 1';
 } else {
 $query .= ' AND ROWNUM = 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 相关文章推荐
第四节--构造函数和析构函数
Nov 16 PHP
PHP_MySQL教程-第一天
Mar 18 PHP
PHP URL地址获取函数代码(端口等) 推荐
May 15 PHP
php ci框架中加载css和js文件失败的解决方法
Mar 03 PHP
PHP中使用循环实现的金字塔图形
Nov 08 PHP
PHP使用strtotime获取上个月、下个月、本月的日期
Dec 30 PHP
php处理json格式数据经典案例总结
May 19 PHP
php微信浏览器分享设置以及回调详解
Aug 01 PHP
php出租房数据管理及搜索页面
May 23 PHP
PHP基于正则批量替换Img中src内容实现获取缩略图的功能示例
Jun 07 PHP
Laravel框架FormRequest中重写错误处理的方法
Feb 18 PHP
phpstudy2020搭建站点的实现示例
Oct 30 PHP
PHP设置头信息及取得返回头信息的方法
Jan 25 #PHP
基于命令行执行带参数的php脚本并取得参数的方法
Jan 25 #PHP
crontab无法执行php的解决方法
Jan 25 #PHP
win7安装php框架Yii的方法
Jan 25 #PHP
php结合md5实现的加密解密方法
Jan 25 #PHP
PHP几个实用自定义函数小结
Jan 25 #PHP
php代码架构的八点注意事项
Jan 25 #PHP
You might like
PHP的压缩函数实现:gzencode、gzdeflate和gzcompress的区别
2016/01/27 PHP
jquery $(this).attr $(this).val方法使用介绍
2013/10/08 Javascript
Nodejs的express使用教程
2015/11/23 NodeJs
javascript运算符——逻辑运算符全面解析
2016/06/27 Javascript
BOM系列第二篇之定时器requestAnimationFrame
2016/08/17 Javascript
jQuery实现ToolTip元素定位显示功能示例
2016/11/23 Javascript
JavaScript Uploadify文件上传实例
2017/02/28 Javascript
JS实现多级菜单中当前菜单不随页面跳转样式而发生变化
2017/05/30 Javascript
使用Require.js封装原生js轮播图的实现代码
2017/06/15 Javascript
js学习总结之DOM2兼容处理重复问题的解决方法
2017/07/27 Javascript
深入浅出vue图片路径的实现
2019/09/04 Javascript
layer扩展打开/关闭动画的方法
2019/09/23 Javascript
解决vue初始化项目时,一直卡在Project description上的问题
2019/10/31 Javascript
JS实现手写 forEach算法示例
2020/04/29 Javascript
python 随机数使用方法,推导以及字符串,双色球小程序实例
2017/09/12 Python
Python3 shelve对象持久存储原理详解
2020/03/23 Python
keras实现多GPU或指定GPU的使用介绍
2020/06/17 Python
英国在线房屋中介网站:Yopa
2018/01/09 全球购物
英国电子产品购物网站:TobyDeals
2018/07/30 全球购物
Omio荷兰:预订火车、巴士和机票
2018/11/04 全球购物
什么是Connection-oriented Protocol/Connectionless Protocol面向连接的协议/无连接协议
2012/09/06 面试题
介绍一下Linux内核的排队自旋锁
2014/01/04 面试题
写好求职信第一句话的技巧
2013/10/26 职场文书
艺术应用与设计个人的自我评价
2013/11/23 职场文书
优秀的2014年两会精神解读
2014/03/17 职场文书
优秀工会工作者事迹材料
2014/06/02 职场文书
专题组织生活会方案
2014/06/15 职场文书
小学学校门卫岗位职责
2014/08/03 职场文书
五五普法心得体会
2014/09/04 职场文书
红领巾心向党演讲稿
2014/09/10 职场文书
旷课检讨书500字
2014/10/14 职场文书
创先争优承诺书
2015/01/20 职场文书
中秋节寄语2015
2015/03/24 职场文书
2016年“世界气象日”广播稿
2015/12/17 职场文书
2017年寒假少先队活动总结
2016/04/06 职场文书
python+pyhyper实现识别图片中的车牌号思路详解
2022/12/24 Python