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连mysql和oracle数据库性能比较
Oct 09 PHP
PHP控制网页过期时间的代码
Sep 28 PHP
php面向对象全攻略 (二) 实例化对象 使用对象成员
Sep 30 PHP
一篇有意思的技术文章php介绍篇
Oct 26 PHP
php设计模式 DAO(数据访问对象模式)
Jun 26 PHP
基于php常用正则表达式的整理汇总
Jun 08 PHP
PHP连接局域网MYSQL数据库的简单实例
Aug 26 PHP
PHP封装的一个支持HTML、JS、PHP重定向的多功能跳转函数
Jun 19 PHP
PHP编程之设置apache虚拟目录
Jul 08 PHP
详解如何在云服务器上部署Laravel
Jun 30 PHP
php二维码生成以及下载实现
Sep 28 PHP
PHP函数用法详解【初始化、嵌套、内置函数等】
Jun 02 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
预告映像公开!第1章续篇剧场版动画《Princess Principal Crown Handler》4月10日上映!
2020/03/06 日漫
php smarty的预保留变量总结
2008/12/04 PHP
php array_pop()数组函数将数组最后一个单元弹出(出栈)
2011/07/12 PHP
PHPStorm+XDebug进行调试图文教程
2016/06/13 PHP
thinkphp分页集成实例
2017/07/24 PHP
jQuery布局插件UI Layout简介及使用方法
2013/04/03 Javascript
jQuery中parents()和parent()的区别分析
2014/10/28 Javascript
使用javascript插入样式
2016/03/14 Javascript
特殊日期提示功能的实现方法
2016/06/16 Javascript
JavaScript中ES6 Babel正确安装过程
2016/07/18 Javascript
AngularJS service之select下拉菜单效果
2017/07/28 Javascript
jQuery实现文字超过1行、2行或规定的行数时自动加省略号的方法
2018/03/28 jQuery
JsonProperty 的使用方法详解
2019/10/11 Javascript
nodejs实现的http、https 请求封装操作示例
2020/02/06 NodeJs
jQuery实现带进度条的轮播图
2020/09/13 jQuery
[01:03:00]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第一局
2016/02/25 DOTA
Python使用email模块对邮件进行编码和解码的实例教程
2016/07/01 Python
利用numpy+matplotlib绘图的基本操作教程
2017/05/03 Python
Python 3中print函数的使用方法总结
2017/08/08 Python
浅谈Python2获取中文文件名的编码问题
2018/01/09 Python
解决pycharm运行时interpreter为空的问题
2018/10/29 Python
Python logging设置和logger解析
2019/08/28 Python
Python tkinter和exe打包的方法
2020/02/05 Python
使用keras2.0 将Merge层改为函数式
2020/05/23 Python
python用tkinter实现一个简易能进行随机点名的界面
2020/09/27 Python
Bibloo罗马尼亚网站:女装、男装、童装及鞋子和配饰
2019/07/20 全球购物
视光学专业毕业生推荐信
2013/10/28 职场文书
半年思想汇报
2013/12/30 职场文书
致铅球运动员广播稿精选
2014/01/12 职场文书
《画风》教学反思
2014/04/16 职场文书
幼儿园教师岗位职责
2015/04/02 职场文书
《鸟的天堂》教学反思
2016/02/19 职场文书
创业计划书介绍
2019/04/24 职场文书
Windows10下安装MySQL8
2021/04/06 MySQL
mysql升级到5.7时,wordpress导数据报错1067的问题
2021/05/27 MySQL
python flappy bird小游戏分步实现流程
2022/02/15 Python