PHP oracle分页
oracle分页
function getall($query, $start=0, $rows=-1)
{
$this->dbh = oci_connect('aaa','mmm',"(DEscriptION=(ADDRESS=(PROTOCOL =TCP)(HOST=bbb)(PORT = 1521))(CONNECT_DATA =(SID=vvv)))");
$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 (empty($result))
$row = array();
else
$row = $result[0];
unset($result);
return $row;
} public function test()
{
$sql = 'SELECT * FROM TBL_ACCOUNT_CHANNEL ';
$page = 10;
$total = $this->getcount($sql);
$page_number = 10;
$result = $this->getpage($sql,$total,$page,$page_number);
print_r($result);
}
PHP oracle分页的更多相关文章
- 【SQL】Oracle分页查询的三种方法
[SQL]Oracle分页查询的三种方法 采用伪列 rownum 查询前10条记录 ? 1 2 3 4 5 6 7 8 9 10 11 [sql] select * from t_user t whe ...
- Oracle 分页原理
oracle rownum 及分页处理的使用方法 在实际应用中我们经常碰到这样的问题,比如一张表比较大,我们只要其中的查看其中的前几条数据,或者对分页处理数据.在这些情况下我们都需要用到rownum. ...
- Sqlserver2008和Oracle分页语句
SqlServer 分页语句 select StuID ,StuNo,StuName,Age,Sex, ClassName ClassName from (select *, row_number() ...
- mysql和oracle 分页查询(转)
最近简单的对oracle,mysql,sqlserver2005的数据分页查询作了研究,把各自的查询的语句贴出来供大家学习..... (一). mysql的分页查询 mysql的分页查询是最简单的,借 ...
- 说说oracle分页的sql语句
说说oracle分页的sql语句,分排序和不排序两种. 当结果集不需要进行排序时,每页显示条数为:rowPerPage,当前页数为:currentPage. 1. 相对来说,这种查询速度会快一些,因为 ...
- Oracle分页查询语句的写法(转)
Oracle分页查询语句的写法(转) 分页查询是我们在使用数据库系统时经常要使用到的,下文对Oracle数据库系统中的分页查询语句作了详细的介绍,供您参考. Oracle分页查询语句使我们最常用的 ...
- oracle分页与rownum
Oracle分页(limit方式的运用) Oracle不支持类似于 MySQL 中的 limit. 但你还是可以rownum来限制返回的结果集的行数. 第一种 select * from a_matr ...
- Oracle 分页方法研究
1.Oracle 中的三大分页方法 1.1.通过分析函数分页 1.2.通过 ROWNUM 分页 1.3.通过 ROWID 分页 2.Oracle 分页解决方案浅析 2.1.纯后端代码完成分页 2.2. ...
- MySQL oracle 分页
(1)MySql的Limit m,n语句 Limit后的两个参数中,参数m是起始下标,它从0开始:参数n是返回的记录数.我们需要分页的话指定这两个值即可. 比如:查询10行记录,起始行从3开始 SEL ...
随机推荐
- lucene底层数据结构——底层filter bitset原理,时间序列数据压缩将同一时间数据压缩为一行
如何联合索引查询? 所以给定查询过滤条件 age=18 的过程就是先从term index找到18在term dictionary的大概位置,然后再从term dictionary里精确地找到18这个 ...
- return false取消手机移动端的默认设置
想做一个语音界面,当长按语音按钮的时候,总会出现移动端什么复制粘贴菜单.然后在JS中加入return false后就消失了,感觉好神奇哦~
- BZOJ1736 [Usaco2005 jan]The Wedding Juicer 婚宴的榨汁机
从外面一点一点往里面拓展(floodfill),每次找出最小的一个点,计算它对答案的贡献就好了... 找最小的点的话,直接pq就行 /********************************* ...
- Android为ViewPager增加切换动画——使用属性动画.
ViewPager作为Android最常用的的组件之一,相信大家在项目中会频繁的使用到的,例如利用ViewPager制作引导页.轮播图,甚至做整个app的表现层的框架等等. Android3.0以下不 ...
- 大过年的,不下班的,上个Android文件操作类(内部存储和sd卡均可)
package com.kkdiangame.UI.res; import java.io.ByteArrayOutputStream; import java.io.File; import jav ...
- hdu 4630 No Pain No Game
http://acm.hdu.edu.cn/showproblem.php?pid=4630 离散化+树状数组 将数组 *a 从后向前遍历 遍历到 a[x] 的时候 再枚举a[x]的约数 假如 约数 ...
- html圆角提示效果
<fieldset> <legend>标题</legend> 内容 </fieldset>
- java jar
http://www.cnblogs.com/shirui/p/5270969.html Java之 将程序打包成jar包 准备材料: 1.java文件: Helloworld.java pack ...
- webview上传图片
import java.io.File; import android.annotation.SuppressLint;import android.app.Activity;import andro ...
- primitive数据类型
/*primitive数据类型 *primitive主要是用来存储原始的数据 *boolean\byte\short\int\long\double **/public class Shujuleix ...