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 相关文章推荐
PHP个人网站架设连环讲(一)
Oct 09 PHP
ADODB的数据库封包程序库
Dec 31 PHP
在IIS7.0下面配置PHP 5.3.2运行环境的方法
Apr 13 PHP
ThinkPHP的L方法使用简介
Jun 18 PHP
php中get_cfg_var()和ini_get()的用法及区别
Mar 04 PHP
PHP curl模拟登录带验证码的网站
Nov 30 PHP
PHP信号量基本用法实例详解
Feb 12 PHP
PHP识别二维码的方法(php-zbarcode安装与使用)
Jul 07 PHP
PHP基于回溯算法解决n皇后问题的方法示例
Nov 07 PHP
PHP cURL获取微信公众号access_token的实例
Apr 28 PHP
php如何比较两个浮点数是否相等详解
Feb 12 PHP
Laravel 框架路由原理与路由访问实例分析
Apr 14 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
Eclipse中php插件安装及Xdebug配置的使用详解
2013/04/25 PHP
使用GD库生成带阴影文字的图片
2015/03/27 PHP
php检测url是否存在的方法
2015/04/14 PHP
dtree 网页树状菜单及传递对象集合到js内,动态生成节点
2012/04/14 Javascript
js弹出层永远居中实现思路及代码
2013/11/29 Javascript
javascript实现将文件保存到本地方法汇总
2015/07/26 Javascript
基于JS实现PHP的sprintf函数实例
2015/11/14 Javascript
javascript图片预加载完整实例
2015/12/10 Javascript
基于Jquery和html5实现炫酷的3D焦点图动画
2016/03/02 Javascript
即将发布的jQuery 3 有哪些新特性
2016/04/14 Javascript
jQuery插件dataTables添加序号列的方法
2016/07/06 Javascript
js+canvas实现动态吃豆人效果
2017/03/22 Javascript
ES6字符串模板,剩余参数,默认参数功能与用法示例
2017/04/06 Javascript
微信小程序-滚动消息通知的实例代码
2017/08/03 Javascript
input 标签实现输入框带提示文字效果(两种方法)
2017/10/09 Javascript
vue打包后显示空白正确处理方法
2017/11/01 Javascript
Bootstrap 模态框多次显示后台提交多次BUG的解决方法
2017/12/26 Javascript
Vue封装一个简单轻量的上传文件组件的示例
2018/03/21 Javascript
Angular实现模版驱动表单的自定义校验功能(密码确认为例)
2018/05/17 Javascript
详解Vue调用手机相机和相册以及上传
2019/05/05 Javascript
layer提示框添加多个按钮选择的实例
2019/09/12 Javascript
JS中锚点链接点击平滑滚动并自由调整到顶部位置
2021/02/06 Javascript
[01:48]DOTA2 2015国际邀请赛中国区预选赛第二日战报
2015/05/27 DOTA
[42:25]EG vs Spirit Supermajor 败者组 BO3 第二场 6.4
2018/06/05 DOTA
Python里隐藏的“禅”
2014/06/16 Python
TensorFlow实现非线性支持向量机的实现方法
2018/04/28 Python
在pytorch中动态调整优化器的学习率方式
2020/06/24 Python
Python实现一个优先级队列的方法
2020/07/31 Python
观看信仰心得体会
2014/09/04 职场文书
群众路线领导班子四风对照检查材料
2014/09/27 职场文书
加强作风建设演讲稿
2014/10/24 职场文书
2015年党员个人自我评价
2015/03/03 职场文书
贷款工资证明范本
2015/06/12 职场文书
关于运动会的广播稿
2015/08/19 职场文书
2016大学优秀学生干部事迹材料
2016/03/01 职场文书
python manim实现排序算法动画示例
2022/08/14 Python