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 相关文章推荐
windows xp下安装pear
Dec 02 PHP
php 删除一个数组中的某个值.兼容多维数组!
Feb 18 PHP
微信公众平台开发实现2048游戏的方法
Apr 15 PHP
php实现的美国50个州选择列表实例
Apr 20 PHP
分享php分页的功能模块
Jun 16 PHP
PHP判断字符串长度的两种方法很实用
Sep 22 PHP
浅析Yii2 GridView 日期格式化并实现日期可搜索教程
Apr 22 PHP
php基于数组函数实现关联表的编辑操作示例
Jul 04 PHP
PHP钩子实现方法解析
May 21 PHP
PHP使用 Imagick 扩展实现图片合成,圆角处理功能示例
Sep 09 PHP
关于laravel 日志写入失败问题汇总
Oct 17 PHP
PHP网站常见安全漏洞,及相应防范措施总结
Mar 01 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
2006/10/09 PHP
php中filter_input函数用法分析
2014/11/15 PHP
PHP多文件上传实例
2015/07/09 PHP
使用php-timeit估计php函数的执行时间
2015/09/06 PHP
Laravel5.1 框架Request请求操作常见用法实例分析
2020/01/04 PHP
PHP 对象接口简单实现方法示例
2020/04/13 PHP
javascript 写的一个简单的timer
2009/07/30 Javascript
深入理解javascript学习笔记(一) 编写高质量代码
2012/08/09 Javascript
Javascript基础知识(二)事件
2014/09/29 Javascript
实例讲解避免javascript冲突的方法
2016/01/03 Javascript
JavaScript和jQuery获取input框的绝对位置实现方法
2016/10/13 Javascript
js阻止冒泡和默认事件(默认行为)详解
2016/10/20 Javascript
jQuery监听浏览器窗口大小的变化实例
2017/02/07 Javascript
vue项目中使用百度地图的方法
2018/06/08 Javascript
Vue Element 分组+多选+可搜索Select选择器实现示例
2018/07/23 Javascript
200行HTML+JavaScript实现年会抽奖程序
2019/01/22 Javascript
如何在微信小程序中实现Mixins方案
2019/06/20 Javascript
解决layui弹框失效的问题
2019/09/09 Javascript
JavaScript Tab菜单实现过程解析
2020/05/13 Javascript
使用Turtle画正螺旋线的方法
2017/09/22 Python
Python2/3中urllib库的一些常见用法
2017/12/19 Python
python2.7安装图文教程
2018/03/13 Python
python内置模块collections知识点总结
2019/12/19 Python
python使用协程实现并发操作的方法详解
2019/12/27 Python
python安装mysql的依赖包mysql-python操作
2021/01/01 Python
html如何对span设置宽度
2019/10/30 HTML / CSS
解释i节点在文件系统中的作用
2013/11/26 面试题
护士自我鉴定怎么写
2014/02/07 职场文书
人力资源部经理助理岗位职责
2014/03/04 职场文书
个人授权委托书
2014/04/03 职场文书
机械专业求职信范文
2014/07/15 职场文书
网吧七夕活动策划方案
2014/08/31 职场文书
领导干部四风问题自我剖析材料
2014/09/25 职场文书
2014年教研组工作总结
2014/11/26 职场文书
Java 关于String字符串原理上的问题
2022/04/07 Java/Android
python画条形图的具体代码
2022/04/20 Python