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 相关文章推荐
IIS6+PHP5+MySQL5+Zend Optimizer+phpMyAdmin安装配置图文教程 2009年
Jun 08 PHP
php短域名转换为实际域名函数
Jan 17 PHP
php颜色转换函数hex-rgb(将十六进制格式转成十进制格式)
Sep 23 PHP
使用phpQuery采集网页的方法
Nov 13 PHP
php中mail函数发送邮件失败的解决方法
Dec 24 PHP
thinkphp3.2中Lite文件替换框架入口文件或应用入口文件的方法
May 21 PHP
WordPress中用于获取文章信息以及分类链接的函数用法
Dec 18 PHP
PHP使用FFmpeg获取视频播放总时长与码率等信息
Sep 13 PHP
PHP下载大文件失败并限制下载速度的实例代码
May 10 PHP
php和asp语法上的区别总结
May 12 PHP
Thinkphp5 自定义上传文件名的实现方法
Jul 23 PHP
php新建文件的方法实例
Sep 26 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
中东人咖啡哲学
2021/03/03 咖啡文化
解析PHP强制转换类型及远程管理插件的安全隐患
2014/06/30 PHP
codeigniter中实现一次性加载多个view的方法
2015/03/20 PHP
php约瑟夫问题解决关于处死犯人的算法
2015/03/23 PHP
php判断对象是派生自哪个类的方法
2015/06/20 PHP
PHP获取网站中各文章的第一张图片的代码示例
2016/05/20 PHP
php实现基于openssl的加密解密方法
2016/09/30 PHP
php+jQuery ajax实现的实时刷新显示数据功能示例
2019/09/12 PHP
Yii框架组件的事件机制原理与用法分析
2020/04/07 PHP
用JQuery模仿淘宝的图片放大镜显示效果
2011/09/15 Javascript
js 三级关联菜单效果实例
2013/08/13 Javascript
jquery如何判断某元素是否具备指定的样式
2013/11/05 Javascript
js 获取、清空input type=&quot;file&quot;的值示例代码
2014/02/19 Javascript
JS onkeypress兼容性写法详解
2016/04/27 Javascript
浅谈jquery的map()和each()方法
2016/06/12 Javascript
JQuery控制图片由中心点逐渐放大效果
2016/06/26 Javascript
微信小程序 wx.request方法的异步封装实例详解
2017/05/18 Javascript
jQuery插件artDialog.js使用与关闭方法示例
2017/10/09 jQuery
vue父组件点击触发子组件事件的实例讲解
2018/02/08 Javascript
vue使用原生js实现滚动页面跟踪导航高亮的示例代码
2018/10/25 Javascript
在vue中实现给每个页面顶部设置title
2020/07/29 Javascript
[50:24]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python类和继承用法实例
2015/07/07 Python
Python 关于反射和类的特殊成员方法
2017/09/14 Python
解决pyinstaller打包pyqt5的问题
2019/01/08 Python
解决PySide+Python子线程更新UI线程的问题
2019/01/11 Python
Python 列表去重去除空字符的例子
2019/07/20 Python
Python:type、object、class与内置类型实例
2019/12/25 Python
jupyter 使用Pillow包显示图像时inline显示方式
2020/04/24 Python
ProBikeKit英国:在线公路自行车之家
2017/02/10 全球购物
受外贸欢迎的美国主机:BlueHost
2017/05/16 全球购物
TripAdvisor德国:全球领先的旅游网站
2017/12/07 全球购物
中国领先的汽车保养服务平台:途虎养车
2019/10/18 全球购物
最新大学生自我评价
2013/09/24 职场文书
电子商务应届生自我鉴定
2014/01/13 职场文书
MySQL的存储函数与存储过程的区别解析
2022/04/08 MySQL