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 的ArrayAccess接口 像数组一样来访问你的PHP对象
Oct 12 PHP
谷歌音乐搜索栏的提示功能php修正代码
May 09 PHP
PHP多个版本的分析解释
Jul 21 PHP
解析PHP汉字转换拼音的类
Jun 18 PHP
PHP关于IE下的iframe跨域导致session丢失问题解决方法
Oct 10 PHP
PHP基本语法总结
Sep 06 PHP
PHP程序中使用adodb连接不同数据库的代码实例
Dec 19 PHP
ThinkPHP实现生成和校验验证码功能
Apr 28 PHP
php+jQuery实现的三级导航栏下拉菜单显示效果
Aug 10 PHP
PHP count()函数讲解
Feb 03 PHP
PHP使用mysqli同时执行多条sql查询语句的实例
Mar 22 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
Mar 23 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
thinkphp循环结构用法实例
2014/11/24 PHP
php官方微信接口大全(微信支付、微信红包、微信摇一摇、微信小店)
2015/12/21 PHP
Thinkphp和Bootstrap结合打造个性的分页样式(推荐)
2016/08/01 PHP
在Ubuntu 18.04上安装PHP 7.3 7.2和7.0的方法
2019/04/09 PHP
JavaScript对象模型-执行模型
2008/04/28 Javascript
JavaScript弹簧振子超简洁版 完全符合能量守恒,胡克定理
2009/10/25 Javascript
jquery中ajax学习笔记4
2011/10/16 Javascript
分享XmlHttpRequest调用Webservice的一点心得
2012/07/20 Javascript
js处理自己不能定义二维数组的方法详解
2014/03/03 Javascript
js控制鼠标事件移动及移出效果显示
2014/10/19 Javascript
JavaScript里四舍五入函数round用法实例
2015/04/06 Javascript
jQuery插件Zclip实现完美兼容个浏览器点击复制内容到剪贴板
2015/04/30 Javascript
JQuery+CSS实现图片上放置按钮的方法
2015/05/29 Javascript
JavaScript清空数组元素的两种方法简单比较
2015/07/10 Javascript
Vue + Webpack + Vue-loader学习教程之功能介绍篇
2017/03/14 Javascript
vue时间格式化实例代码
2017/06/13 Javascript
ReactNative中使用Redux架构总结
2017/12/15 Javascript
vue 路由嵌套高亮问题的解决方法
2018/05/17 Javascript
微信小程序仿知乎实现评论留言功能
2018/11/28 Javascript
用vue 实现手机触屏滑动功能
2020/05/28 Javascript
vue3弹出层V3Popup实例详解
2021/01/04 Vue.js
python自动化报告的输出用例详解
2018/05/30 Python
Python利用sqlacodegen自动生成ORM实体类示例
2019/06/04 Python
Django结合ajax进行页面实时更新的例子
2019/08/12 Python
基于keras 模型、结构、权重保存的实现
2020/01/24 Python
python GUI库图形界面开发之PyQt5工具栏控件QToolBar的详细使用方法与实例
2020/02/28 Python
Python进程间通信multiprocess代码实例
2020/03/18 Python
简单说说tomcat的配置
2013/05/28 面试题
Java如何获得ResultSet的总行数
2016/09/03 面试题
田径运动会开幕式及主持词
2014/03/28 职场文书
个人授权委托书样本
2014/09/13 职场文书
2015年人民调解工作总结
2015/05/18 职场文书
电影地道战观后感
2015/06/04 职场文书
《童年》读后感(三篇)
2019/08/27 职场文书
《悬崖边的树》读后感2篇
2019/12/02 职场文书
阿里云日志过滤器配置日志服务
2022/04/09 Servers