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 代码优化之经典示例
Mar 24 PHP
初识php MVC
Sep 10 PHP
php校验表单检测字段是否为空的方法
Mar 20 PHP
PHP动态规划解决0-1背包问题实例分析
Mar 23 PHP
以文件形式缓存php变量的方法
Jun 26 PHP
Symfony2中被遗弃的getRequest()方法分析
Mar 17 PHP
Yii2分页的使用及其扩展方法详解
May 23 PHP
thinkPHP中volist标签用法示例
Dec 06 PHP
PHP+redis实现的购物车单例类示例
Feb 02 PHP
PHP静态方法和静态属性及常量属性的区别与介绍
Mar 22 PHP
php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
May 09 PHP
yii框架结合charjs实现统计30天数据的方法
Apr 04 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
js 键盘记录实现(兼容FireFox和IE)
2010/02/07 Javascript
JavaScript使用IEEE 标准进行二进制浮点运算产生莫名错误的解决方法
2011/05/28 Javascript
js字母大小写转换实现方法总结
2013/11/13 Javascript
JS将制定内容复制到剪切板示例代码
2014/02/11 Javascript
js清空form表单中的内容示例
2014/05/20 Javascript
javascript学习笔记(二)数组和对象部分
2014/09/30 Javascript
js的flv视频播放器插件使用方法
2015/06/23 Javascript
JS组件系列之使用HTML标签的data属性初始化JS组件
2016/09/14 Javascript
基于JQuery实现的跑马灯效果(文字无缝向上翻动)
2016/12/02 Javascript
浅谈regExp的test方法取得的值变化的原因及处理方法
2017/03/01 Javascript
js, jQuery实现全选、反选功能
2017/03/08 Javascript
Javacript中自定义的map.js  的方法
2017/11/26 Javascript
基于vue-cli 打包时抽离项目相关配置文件详解
2018/03/07 Javascript
vue和webpack安装命令详解
2018/06/15 Javascript
Vue导出页面为PDF格式的实现思路
2018/07/31 Javascript
BootStrap modal实现拖拽功能
2018/12/01 Javascript
turn.js异步加载实现翻书效果
2019/07/25 Javascript
JavaScript中的null和undefined用法解析
2019/09/30 Javascript
Python自然语言处理之词干,词形与最大匹配算法代码详解
2017/11/16 Python
Python3多线程爬虫实例讲解代码
2018/01/05 Python
python爬取淘宝商品销量信息
2018/11/16 Python
Django Python 获取请求头信息Content-Range的方法
2019/08/06 Python
IE8下CSS3选择器nth-child() 不兼容问题的解决方法
2016/11/16 HTML / CSS
css3 边框、背景、文本效果的实现代码
2018/03/21 HTML / CSS
英国电子产品购物网站:TobyDeals
2018/07/30 全球购物
竞选劳动委员演讲稿
2014/04/28 职场文书
招股说明书范本
2014/05/06 职场文书
cf战队收人口号
2014/06/21 职场文书
2014年财政所工作总结
2014/11/22 职场文书
2014年科普工作总结
2014/12/06 职场文书
2014年学生党支部工作总结
2014/12/20 职场文书
同学毕业留言寄语
2015/02/27 职场文书
python爬虫请求库httpx和parsel解析库的使用测评
2021/05/10 Python
Ajax 的初步实现(使用vscode+node.js+express框架)
2021/06/18 Javascript
Java生成读取条形码和二维码的简单示例
2021/07/09 Java/Android
Python初识逻辑与if语句及用法大全
2021/08/07 Python