php分页基于oracle,PHP实现的oracle分页函数实例
这篇文章主要介绍了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分页函数实例相关推荐
- Oracle、 Mysql 、 SQLserver 分页查询
MYSQL 分页最简单了. SELECT * FROM Account WHERE (usertype='base' or usertype='home' or usertype='salse') ...
- oracle ldom ipmp,在 Oracle VM Server for SPARC 虚拟网络中使用基于链路的 IPMP
在 Oracle VM Server for SPARC 虚拟网络中使用基于链路的 IPMP 虚拟网络设备和虚拟交换机设备支持网络堆栈的链路状态更新.默认情况下,虚拟网络设备会报告其虚拟链路(到虚拟交 ...
- 基于jQueryUI控件、oracle应用双机架构企业PMS系统实战课程-张勇-专题视频课程
基于jQueryUI控件.oracle应用双机架构企业PMS系统实战课程-184人已学习 课程介绍 本套课程介绍的PMS系统中我们将 Bootstrap 应用到了 jQuery UI ...
- 安装oracle1628,基于RHEL 6.5安装Oracle 11g详细教程(7)——配置Oracle自启动
基于RHEL 6.5安装Oracle 11g详细教程(7)--配置Oracle自启动 发布时间:2020-06-07 04:01:03 来源:51CTO 阅读:1370 作者:kevin1985122 ...
- 基于Java(SSH)+ Oracle 实现的(Web)视频教学平台【100010405】
基于 SSH 的视频教学平台 第 1 章引言 1.1 论文研究背景与意义 随着我国教育事业和多媒体教学设施的快速发展,越来越多的人可以有机会接受教育,促使人们对教育的质量和要求就有了更高的要求.同时, ...
- 生产上oracle扩展表空间,oracle基于裸设备(raw device)扩充表空间
首先在oracle中查询表空间的使用情况,确认是哪个表空间不足. select df.tablespace_name "Tablespace",df.bytes/(1024*102 ...
- oracle中创建游标,oracle 存储过程创建游标
Oracle与Sql Server差异点详解 1.create函数或存储过程异同点 Oracle 创建函数或存储过程一般是 create or replace -- SQL SERVER 则是在创建之 ...
- oracle 查询公有同义词,Oracle序列(sequence),OracleRUNNUM和Oracle同义词(synonyms)
一团网资讯 一团资讯 > oracle > Oracle序列(sequence),OracleRUNNUM和Oracle同义词(synonyms)... Oracle序列(sequence ...
- oracle性能优化求生...,Oracle,SQL性能优化之探究|《oracle性能优化求生指南》
摘 要 在数据库应用中,根据用户提交的查询请求,如何才能精炼又高效地得到查询结果?从多个角度描述怎样优化SQL语句.实验结果表明,SQL优化能够减轻系统资源的占用,满足用户的要求. 关键词 SQL优化 ...
- oracle rman备份时间,Oracle使用RMAN进行备份详述
备份理论和基本语法 备份概念 执行备份或还原的数据库称为目标.在一些环境下,有许多数据库,因此有许多RMAN目标.应一次连接每个数据库.目标的每个备份都有一些属性: 打开或关闭 完整或部分 完整或增量 ...
最新文章
- Reinhard经典色彩迁移算法
- SAP Spartacus 页面 cx-storefront 的填充逻辑
- 文献阅读High-throughput sequencing of the transcriptome and chromatin accessibility in the same cell
- 参考文献顺序_科技论文参考文献的著录规则及存在问题
- 【Flutter 问题系列第 54 篇】Flutter 引入阿里矢量图标库的详细图文教程
- AVR单片机学习笔记
- c4d流体插件_C4D的Jet Fluids免费流体插件
- 【北交所周报】IPO上会5过5;四成个股实现上涨,硅烷科技涨56%,成单周涨幅最大个股;...
- 计算机中人民币数字格式,数字转人民币金额大写
- 什么是MRAM(不挥发性磁性随机存储器)
- 面经:两年半经验,面10个公司,经28轮面试,拿9个offer,涨麻了!
- 树莓派基础实验20:火焰报警传感器实验
- utils方法,时间工具,数组排序,违禁词检测
- 60种提升自身能量的方法
- 【原创】联通网络无法使用FTP,无法使用21端口连接的解决方法
- 用canvas画钟,实时变化的钟
- 错了!王慧文要做的是OpenAl,不只是ChatGPT
- 【Python爬虫】403 Forbidden
- 新一代ERPII 企业销售、采购及财务一体化高效管理的利器
- UIlabel - 富文本属性
热门文章
- java 大数操作(加减乘除及取余)
- JAVA JDK windows环境搭建
- python编程(最简单的rpc代码)
- html搜索框如何加下拉框,js实现带搜索功能的下拉框
- tts android,Android系统自带的TTS实现语音播报
- 设计一个矩形类rectangle_使用Python super()为您的类增强
- python编程常用代码-Python编程常见问题与解答
- if mybatis or test_真赞!IDEA中这么玩MyBatis,让编码速度飞起
- 发那科机器人点位编辑_FANUC机器人:参考位置功能介绍与设定方法
- win10护眼模式_电脑技巧|Win10系统如何设置护眼模式?