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导入csv文件碰到乱码问题的解决方法
Feb 10 PHP
ThinkPHP中__initialize()和类的构造函数__construct()用法分析
Nov 29 PHP
PHP获取文件相对路径的方法
Feb 26 PHP
php中使用in_array() foreach array_search() 查找数组是否包含时的性能对比
Apr 14 PHP
PHP中curl_setopt函数用法实例分析
Apr 16 PHP
CodeIgniter实现从网站抓取图片并自动下载到文件夹里的方法
Jun 17 PHP
利用php输出不同的心形图案
Apr 22 PHP
PHP使用FFmpeg获取视频播放总时长与码率等信息
Sep 13 PHP
PHP 配置后台登录以及模板引入
Jan 24 PHP
PHP实现mysqli批量执行多条语句的方法示例
Jul 22 PHP
详解PHP如何更好的利用PHPstorm的自动提示
Aug 18 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
Dec 25 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 源代码压缩小工具
2009/12/22 PHP
如何使用php等比例缩放图片
2016/10/12 PHP
strpos() 函数判断字符串中是否包含某字符串的方法
2019/01/16 PHP
Yii框架布局文件的动态切换操作示例
2019/11/11 PHP
下载站控制介绍字数显示的脚本 显示全部 隐藏介绍等功能
2009/09/19 Javascript
图片上传判断及预览脚本的效果实例
2013/08/07 Javascript
JavaScript使用addEventListener添加事件监听用法实例
2015/06/01 Javascript
jQuery可见性过滤器:hidden和:visibility用法实例
2015/06/24 Javascript
jQuery插件datalist实现很好看的input下拉列表
2015/07/14 Javascript
JavaScript实现给定时间相加天数的方法
2016/01/25 Javascript
BootStrap的Datepicker控件使用心得分享
2016/05/25 Javascript
js判断数组key是否存在(不用循环)的简单实例
2016/08/03 Javascript
JavaScript-定时器0~9抽奖系统详解(代码)
2017/08/16 Javascript
NodeJS服务器实现gzip压缩的示例代码
2018/10/12 NodeJs
微信小程序实现打卡日历功能
2020/09/21 Javascript
react中使用css的7中方式(最全总结)
2019/02/11 Javascript
layui表格数据重载
2019/07/27 Javascript
JQuery事件冒泡和默认行为代码实例
2020/05/13 jQuery
浅析python 中__name__ = '__main__' 的作用
2014/07/05 Python
详细解析Python中的变量的数据类型
2015/05/13 Python
python判断一个集合是否包含了另外一个集合中所有项的方法
2015/06/30 Python
Python函数的周期性执行实现方法
2016/08/13 Python
python编程实现随机生成多个椭圆实例代码
2018/01/03 Python
Python下载网络文本数据到本地内存的四种实现方法示例
2018/02/05 Python
使用python批量化音乐文件格式转换的实例
2019/01/09 Python
Python数据可视化教程之Matplotlib实现各种图表实例
2019/01/13 Python
python3.6环境下安装freetype库和基本使用方法(推荐)
2020/05/10 Python
python中wheel的用法整理
2020/06/15 Python
链表面试题-一个链表的结点结构
2015/05/04 面试题
2014老师三严三实对照检查材料思想汇报
2014/09/18 职场文书
党的群众路线教育实践活动对照检查材料(四风)
2014/09/27 职场文书
培训督导岗位职责
2015/04/10 职场文书
2015年秋学期师德师风建设工作总结
2015/10/23 职场文书
生鲜超市—未来中国最具有潜力零售业态
2019/08/02 职场文书
python机器学习实现oneR算法(以鸢尾data为例)
2022/03/03 Python
以MySQL5.7为例了解一下执行计划
2022/04/13 MySQL