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字符串截取问题
Nov 28 PHP
PHP6 mysql连接方式说明
Feb 09 PHP
php 数组使用详解 推荐
Jun 02 PHP
php设计模式 Bridge (桥接模式)
Jun 26 PHP
destoon在360浏览器下出现用户被强行注销的解决方法
Jun 26 PHP
ThinkPHP实现将SESSION存入MYSQL的方法
Jul 22 PHP
php+mysqli使用面向对象方式查询数据库实例
Jan 29 PHP
从性能方面考虑PHP下载远程文件的3种方法
Dec 29 PHP
PHP基于socket实现的简单客户端和服务端通讯功能示例
Jul 10 PHP
PHP实现基于面向对象的mysqli扩展库增删改查操作工具类
Jul 18 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
Nov 14 PHP
微信公众平台开发教程②微信端分享功能图文详解
Apr 10 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 抽象方法与抽象类abstract关键字介绍及应用
2014/10/16 PHP
浅谈关于PHP解决图片无损压缩的问题
2017/09/01 PHP
php5.5使用PHPMailer-5.2发送邮件的完整步骤
2018/10/14 PHP
php实现的支付宝网页支付功能示例【基于TP5框架】
2019/09/16 PHP
利用NodeJS的子进程(child_process)调用系统命令的方法分享
2013/06/05 NodeJs
javascript表单验证和Window详解
2014/12/11 Javascript
JS+CSS实现鼠标经过弹出一个DIV框完整实例(带缓冲动画渐变效果)
2016/03/25 Javascript
JavaScript中setter和getter方法介绍
2016/07/11 Javascript
JS面试题---关于算法台阶的问题
2016/07/26 Javascript
js绘制购物车抛物线动画
2020/11/18 Javascript
js关于getImageData跨域问题的解决方法
2016/10/14 Javascript
Javascript实现图片懒加载插件的方法
2016/10/20 Javascript
js实现一个简单的数字时钟效果
2017/03/29 Javascript
JS实现的四级密码强度检测功能示例
2017/05/11 Javascript
安装vue-cli报错 -4058 的解决方法
2017/10/19 Javascript
vue自定义键盘信息、监听数据变化的方法示例【基于vm.$watch】
2019/03/16 Javascript
vue+elementUI实现表格关键字筛选高亮
2020/10/26 Javascript
使用layui监听器监听select下拉框,事件绑定不成功的解决方法
2019/09/28 Javascript
浅谈layui 绑定form submit提交表单的注意事项
2019/10/25 Javascript
解决在Vue中使用axios用form表单出现的问题
2019/10/30 Javascript
详解Vue中的MVVM原理和实现方法
2020/07/15 Javascript
解决VUE项目localhost端口服务器拒绝连接,只能用127.0.0.1的问题
2020/08/14 Javascript
pyqt和pyside开发图形化界面
2014/01/22 Python
详解Python中的__init__和__new__
2014/03/12 Python
python简单实现计算过期时间的方法
2015/06/09 Python
Python KMeans聚类问题分析
2018/02/23 Python
Python爬虫——爬取豆瓣电影Top250代码实例
2019/04/17 Python
Python+pyplot绘制带文本标注的柱状图方法
2019/07/08 Python
Pytorch中Tensor与各种图像格式的相互转化详解
2019/12/26 Python
如何解决pycharm调试报错的问题
2020/08/06 Python
小学少先队活动方案
2014/02/18 职场文书
讲文明懂礼貌演讲稿
2014/09/11 职场文书
搞笑欢迎词大全
2015/09/30 职场文书
创业计划书之韩国烧烤店
2019/09/19 职场文书
oracle通过存储过程上传list保存功能
2021/05/12 Oracle
vue实现登陆页面开发实践
2022/05/30 Vue.js