PHP实现的oracle分页函数实例

本文实例讲述了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基于pdo操作数据库技巧总结》及《php+mysql数据库操作入门教程》。

希望本文所述对大家PHP程序设计有所帮助。

(0)

相关推荐

  • Win7 64位系统下PHP连接Oracle数据库

    下面讲下配置过程 一.下载oracle instantclient 下载地址:http://www.oracle.com/technetwork/topics/winx64soft-089540.html 下载 instantclient-basic-windows.x64-11.2.0.4.0 解压路径:D:\Program Files (x86)\Oracle64Client\instantclient_11_2 *注:客户端需要对应数据库版本. 二.配置系统环境变量 在PATH环境变量后加

  • CentOS下PHP安装Oracle扩展

    环境 System:CentOS 6 PHP: 5.3.28 下载Oracle客户端 32位系统 64位系统 复制代码 代码如下: oracle-instantclient-sqlplus-10.2.0.4-1.x86_64.rpm oracle-instantclient-jdbc-10.2.0.4-1.x86_64.rpm oracle-instantclient-devel-10.2.0.4-1.x86_64.rpm oracle-instantclient-basic-10.2.0.4-

  • PHP下的Oracle客户端扩展(OCI8)安装教程

    最近的项目需要用php访问oracle数据库,不得不在linux下给php安装oci8扩展.php也可以使用pdo访问oracle数据库,但还是需要安装客户端. 首先到oracle官网的这个页面下载相关的文件,注意要连数据库服务器的版本,一定要对应,否则安装成功也会连不上,同时也要区分32位.64位服务器,比如我要连的数据库服务器是oracle10.2.0.4,64位主机,那么我要下载下面三个文件: 复制代码 代码如下: oracle-instantclient-basic-10.2.0.4-1

  • windwos下使用php连接oracle数据库的过程分享

    要使用php连接oracle,基本条件是1.需要你安装了php.2.安装了oracle.3.配置了tnsname.ora.本地命令行使用sqlplus能够连接到oracle. 根据你机器的版本选对64bit或者32bit的php程序,我们使用php的oci8扩展连接oracle 安装好php后,打开oci8扩展, 写一段连接oracle的ora.php代码 复制代码 代码如下: <?php $conn = oci_connect('hr', 'welcome', 'MYDB');if (!$co

  • Linux下PHP连接Oracle数据库

    安装步骤: 一.安装oracle-instantclient 下载地址:http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html 下载 oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm 下载 oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm 放在/usr/packages/目录下 # rmp -iv

  • PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法

    本文实例讲述了PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法.分享给大家供大家参考,具体如下: php连接oracle数据库虽然不是最佳拍档,但组内开发确实有这样需求.如果没有参考合适的文档,这个过程还是挺折磨人的,下面是一个记录,原型是国外的一篇博客 Installing PDO_OCI and OCI8 PHP extensions on CentOS 6.4 64bit. 假设你已经安装好php的环境,php版本为5.3,要连接的oracle服务器是 11g R2,操作系

  • Linux下安装oracle客户端并配置php5.3

    因项目需要在linux下进行php5.3的oracle客户端编译,简要介绍一下步骤及走过的弯路. 1.下载Oracle客户端程序包,其中包含OCI.OCCI和JDBC-OCI等相关文件. 1.1下载文件地址 http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html 根据操作系统的版本选择对应的软件,我需要的是X86_64选择 Instant Client for Linux x86-6

  • PHP实现的oracle分页函数实例

    本文实例讲述了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)

  • PHP基于数组实现的分页函数实例

    分页功能是PHP程序设计中非常常见的功能,不同于以往的,今天本文介绍的是PHP基于数组实现的分页函数. 关于数组的分页函数,用数组进行分页的好处是可以方便的进行联合多表查询,只需要将查询的结果放在数组中就可以了以下是数组分页的函数,函数page_array用于数组的分页,函数show_array用于分页函数的操作及显示,需要配合使用.两个函数通过全局变量$countpage发生联系,此变量用于跟踪总页码数. 具体实例代码如下: <?php /** * 数组分页函数 核心函数 array_slic

  • Oracle Instr函数实例讲解

    instr函数为字符查找函数,其功能是查找一个字符串在另一个字符串中首次出现的位置.instr函数在Oracle/PLSQL中是返回要截取的字符串在源字符串中的位置. 字符串的位置是从1开始数instr(str1,str2)计算得出的是后一字符串str2在前一字符串str1中首次出现的位置若没有找到,会返回0 instr()函数的格式: 格式一:instr( string1, string2 ) 含义:instr(源字符串, 目标字符串) 格式二:instr( string1, string2

  • SQLServer与Oracle常用函数实例对比汇总

    一.数学函数 1.绝对值 复制代码 代码如下: S:select abs(-1) value O:select abs(-1) value from dual 2.取整(大) 复制代码 代码如下: S:select ceiling(-1.001) value O:select ceil(-1.001) value from dual 3.取整(小) 复制代码 代码如下: S:select floor(-1.001) value O:select floor(-1.001) value from

  • Oracle分页查询的实例详解

    Oracle分页查询的实例详解 1.Oracle分页查询: SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM tab) A WHERE ROWNUM <= 40 ) WHERE RN >= 21; 这个分页比下面的执行时间少,效率高. 2. select * from (select c.*,rownum rn from tab c) where rn between 21 and 40 对比这两种写法,绝大多数的情况下,第一个

  • mysql oracle和sqlserver分页查询实例解析

    最近简单的对oracle,mysql,sqlserver2005的数据分页查询作了研究,把各自的查询的语句贴出来供大家学习..... (一).mysql的分页查询 mysql的分页查询是最简单的,借助关键字limit即可实现查询,查询语句通式: selecto.*from(sql)o limit firstIndex,pageSize 如下面的截图,每页显示的记录数为20: 查询(1-20)这20条记录 查询(21-40)这20条记录 mysql的分页查询就这么简单...... (二).sqls

  • php分页函数完整实例代码

    本文分享一例php分页函数完整实例代码,使用此函数实现分页效果很不错.分享给大家供大家参考. 具体功能代码如下: <?php /* * Created on 2011-07-28 * 使用方法: require_once('mypage.php'); $result=mysql_query("select * from mytable", $myconn); $total=mysql_num_rows($result); //取得信息总数 pageDivide($total,10

  • Oracle DECODE函数语法使用介绍

    Oracle DECODE函数功能很强,下面就为您详细介绍Oracle DECODE函数的用法,希望可以让您对Oracle DECODE函数有更多的了解. Oracle DECODE函数 Oracle DECODE函数是Oracle公司独家提供的功能,它是一个功能很强的函数.它虽然不是SQL的标准,但对于性能非常有用.到目前,其他的数据库供应商还不能提供类似DECODE的功能,甚至有的数据库的供应商批评Oracle的SQL不标准.实际上,这种批评有些片面或不够水平.就象有些马车制造商抱怨亨利.福

  • oracle trunc()函数的使用方法

    oracle trunc()函数是最常用的函数之一,下面就为您介绍oracle trunc()函数的用法,供您参考,希望可以让您对oracle trunc()函数有更深的认识. 1.TRUNC(for dates) TRUNC函数为指定元素而截去的日期值. 其具体的语法格式如下: TRUNC(date[,fmt]) 其中: date一个日期值 fmt        日期格式,该日期将由指定的元素格式所截去.忽略它则由最近的日期截去 下面是该函数的使用情况: TRUNC(TO_DATE('24-N

  • mysql、mssql及oracle分页查询方法详解

    本文实例讲述了mysql.mssql及oracle分页查询方法.分享给大家供大家参考.具体分析如下: 分页查询在web开发中是最常见的一种技术,最近在通过查资料,有一点自己的心得 一.mysql中的分页查询 注: m=(pageNum-1)*pageSize;n= pageSize; pageNum是要查询的页码,pageSize是每次查询的数据量, 方法一: select * from table order by id limit m, n; 该语句的意思为,查询m+n条记录,去掉前m条,返

随机推荐