这篇文章主要介绍了PHP实现的oracle分页函数,结合实例形式分析了PHP针对oracle数据库使用rownum代替MySQL中limit实现的分页操作相关技巧,需要的朋友可以参考下

本文实例讲述了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分页基于oracle,PHP实现的oracle分页函数实例相关推荐

  1. Oracle、 Mysql 、 SQLserver 分页查询

    MYSQL 分页最简单了. SELECT * FROM Account  WHERE (usertype='base' or usertype='home' or usertype='salse')  ...

  2. oracle ldom ipmp,在 Oracle VM Server for SPARC 虚拟网络中使用基于链路的 IPMP

    在 Oracle VM Server for SPARC 虚拟网络中使用基于链路的 IPMP 虚拟网络设备和虚拟交换机设备支持网络堆栈的链路状态更新.默认情况下,虚拟网络设备会报告其虚拟链路(到虚拟交 ...

  3. 基于jQueryUI控件、oracle应用双机架构企业PMS系统实战课程-张勇-专题视频课程

    基于jQueryUI控件.oracle应用双机架构企业PMS系统实战课程-184人已学习 课程介绍         本套课程介绍的PMS系统中我们将 Bootstrap 应用到了 jQuery UI ...

  4. 安装oracle1628,基于RHEL 6.5安装Oracle 11g详细教程(7)——配置Oracle自启动

    基于RHEL 6.5安装Oracle 11g详细教程(7)--配置Oracle自启动 发布时间:2020-06-07 04:01:03 来源:51CTO 阅读:1370 作者:kevin1985122 ...

  5. 基于Java(SSH)+ Oracle 实现的(Web)视频教学平台【100010405】

    基于 SSH 的视频教学平台 第 1 章引言 1.1 论文研究背景与意义 随着我国教育事业和多媒体教学设施的快速发展,越来越多的人可以有机会接受教育,促使人们对教育的质量和要求就有了更高的要求.同时, ...

  6. 生产上oracle扩展表空间,oracle基于裸设备(raw device)扩充表空间

    首先在oracle中查询表空间的使用情况,确认是哪个表空间不足. select df.tablespace_name "Tablespace",df.bytes/(1024*102 ...

  7. oracle中创建游标,oracle 存储过程创建游标

    Oracle与Sql Server差异点详解 1.create函数或存储过程异同点 Oracle 创建函数或存储过程一般是 create or replace -- SQL SERVER 则是在创建之 ...

  8. oracle 查询公有同义词,Oracle序列(sequence),OracleRUNNUM和Oracle同义词(synonyms)

    一团网资讯 一团资讯 > oracle > Oracle序列(sequence),OracleRUNNUM和Oracle同义词(synonyms)... Oracle序列(sequence ...

  9. oracle性能优化求生...,Oracle,SQL性能优化之探究|《oracle性能优化求生指南》

    摘 要 在数据库应用中,根据用户提交的查询请求,如何才能精炼又高效地得到查询结果?从多个角度描述怎样优化SQL语句.实验结果表明,SQL优化能够减轻系统资源的占用,满足用户的要求. 关键词 SQL优化 ...

  10. oracle rman备份时间,Oracle使用RMAN进行备份详述

    备份理论和基本语法 备份概念 执行备份或还原的数据库称为目标.在一些环境下,有许多数据库,因此有许多RMAN目标.应一次连接每个数据库.目标的每个备份都有一些属性: 打开或关闭 完整或部分 完整或增量 ...

最新文章

  1. Reinhard经典色彩迁移算法
  2. SAP Spartacus 页面 cx-storefront 的填充逻辑
  3. 文献阅读High-throughput sequencing of the transcriptome and chromatin accessibility in the same cell
  4. 参考文献顺序_科技论文参考文献的著录规则及存在问题
  5. 【Flutter 问题系列第 54 篇】Flutter 引入阿里矢量图标库的详细图文教程
  6. AVR单片机学习笔记
  7. c4d流体插件_C4D的Jet Fluids免费流体插件
  8. 【北交所周报】IPO上会5过5;四成个股实现上涨,硅烷科技涨56%,成单周涨幅最大个股;...
  9. 计算机中人民币数字格式,数字转人民币金额大写
  10. 什么是MRAM(不挥发性磁性随机存储器)
  11. 面经:两年半经验,面10个公司,经28轮面试,拿9个offer,涨麻了!
  12. 树莓派基础实验20:火焰报警传感器实验
  13. utils方法,时间工具,数组排序,违禁词检测
  14. 60种提升自身能量的方法
  15. 【原创】联通网络无法使用FTP,无法使用21端口连接的解决方法
  16. 用canvas画钟,实时变化的钟
  17. 错了!王慧文要做的是OpenAl,不只是ChatGPT
  18. 【Python爬虫】403 Forbidden
  19. 新一代ERPII 企业销售、采购及财务一体化高效管理的利器
  20. UIlabel - 富文本属性

热门文章

  1. java 大数操作(加减乘除及取余)
  2. JAVA JDK windows环境搭建
  3. python编程(最简单的rpc代码)
  4. html搜索框如何加下拉框,js实现带搜索功能的下拉框
  5. tts android,Android系统自带的TTS实现语音播报
  6. 设计一个矩形类rectangle_使用Python super()为您的类增强
  7. python编程常用代码-Python编程常见问题与解答
  8. if mybatis or test_真赞!IDEA中这么玩MyBatis,让编码速度飞起
  9. 发那科机器人点位编辑_FANUC机器人:参考位置功能介绍与设定方法
  10. win10护眼模式_电脑技巧|Win10系统如何设置护眼模式?