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初学者常见问题集合 修正版(21问答)
Mar 23 PHP
PHP Directory 函数的详解
Mar 07 PHP
php使用smtp发送支持附件的邮件示例
Apr 13 PHP
Linux下PHP安装mcrypt扩展模块笔记
Sep 10 PHP
PHP定时任务延缓执行的实现
Oct 08 PHP
php通过正则表达式记取数据来读取xml的方法
Mar 09 PHP
PHP批量去除BOM头代码分享
Jun 26 PHP
Yii2搭建后台并实现rbac权限控制完整实例教程
Apr 28 PHP
PHP基于反射机制实现插件的可插拔设计详解
Nov 10 PHP
php readfile()修改文件上传大小设置
Aug 11 PHP
thinkphp5框架扩展redis类方法示例
May 06 PHP
Yii框架分页技术实例分析
Aug 30 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
phpmyadmin打开很慢的解决方法
2014/04/21 PHP
一个php生成16位随机数的代码(两种方法)
2014/09/16 PHP
php防止网站被攻击的应急代码
2015/10/21 PHP
PHP运行模式汇总
2016/11/06 PHP
php检查函数必传参数是否存在的实例详解
2017/08/28 PHP
Javascript 网页黑白效果实现代码(兼容IE/FF等)
2010/04/23 Javascript
关于jQuery对象数据缓存Cache原理以及jQuery.data详解
2013/04/07 Javascript
jquery将一个表单序列化为一个对象的方法
2013/12/02 Javascript
举例详解JavaScript中Promise的使用
2015/06/24 Javascript
jquery实现的判断倒计时是否结束代码
2016/02/05 Javascript
用Nodejs搭建服务器访问html、css、JS等静态资源文件
2017/04/28 NodeJs
AngularJS发送异步Get/Post请求方法
2018/08/13 Javascript
element-ui中select组件绑定值改变,触发change事件方法
2018/08/24 Javascript
微信小程序访问豆瓣电影api的实现方法
2019/03/31 Javascript
一个小时快速搭建微信小程序的方法步骤
2019/04/15 Javascript
微信小程序版本自动更新的方法
2019/06/14 Javascript
修改layui的后台模板的左侧导航栏可以伸缩的方法
2019/09/10 Javascript
使用vue重构资讯页面的实例代码解析
2019/11/26 Javascript
JQuery复选框全选效果如何实现
2020/05/08 jQuery
angular *Ngif else用法详解
2020/12/15 Javascript
Python中的map()函数和reduce()函数的用法
2015/04/27 Python
Python中的命令行参数解析工具之docopt详解
2017/03/27 Python
tensorflow实现对图片的读取的示例代码
2018/02/12 Python
详解python selenium 爬取网易云音乐歌单名
2019/03/28 Python
python实现两个dict合并与计算操作示例
2019/07/01 Python
python-docx文件定位读取过程(尝试替换)
2020/02/13 Python
Python OpenCV读取显示视频的方法示例
2020/02/20 Python
浅析Python 字符编码与文件处理
2020/09/24 Python
微信小程序之html5 canvas绘图并保存到系统相册
2019/06/20 HTML / CSS
详解HTML5中CSS外观属性
2020/09/10 HTML / CSS
LightInTheBox法国站:中国跨境电商
2020/03/05 全球购物
摩飞电器俄罗斯官方网站:Morphy Richards俄罗斯
2020/07/30 全球购物
微电影大赛策划方案
2014/06/05 职场文书
2014教师党员自我评议总结
2014/09/19 职场文书
2015初中生物教研组工作总结
2015/07/21 职场文书
HR必备:超全面的薪酬待遇管理方案!
2019/07/12 职场文书