[转]php + Oracle 实现分页
2008-05-11 23:35
281 查看
其实这个问题也没啥难度,不过到网上找了很久,用 between 的也有,用 minus 的也有。不过用这几种方法都没能成功的完成带排序的分页查询。最后还是在Oracle官网找到了解决的办法。
鉴于Oracle官网无与伦比的速度,将其摘抄与此,便于日后封装 oci 连接类。
原文见 http://www.oracle.com/technology/global/cn/pub/articles/oracle_php_cookbook/fuecks_paged.html
1function & paged_result(& $conn, $select, $start_row, $rows_per_page) {
2
3$sql = "SELECT
4 *
5FROM
6 (
7SELECT
8r.*, ROWNUM as row_number
9FROM
( $select ) r
WHERE
ROWNUM <= :end_row
)
WHERE :start_row <= row_number";
$stmt = oci_parse($conn,$sql);
oci_bind_by_name($stmt, ':start_row', $start_row);
// Calculate the number of the last row in the page
$end_row = $start_row + $rows_per_page - 1;
oci_bind_by_name($stmt, ':end_row', $end_row);
oci_execute($stmt);
// Prefetch the number of rows per page
oci_set_prefetch($stmt, $rows_per_page);
return $stmt;
}
应用这个方法,写出的临时使用的php语句类似于这样:
$select = "SELECT * FROM {$_DATABASE_TABLE_PREFIX_}toperate_log $where $order_by";
$sql = "SELECT * FROM ( SELECT r.*, ROWNUM as row_number FROM ( $select ) r WHERE ROWNUM <= ".($start + $limit)." ) WHERE $start <= row_number";
鉴于Oracle官网无与伦比的速度,将其摘抄与此,便于日后封装 oci 连接类。
原文见 http://www.oracle.com/technology/global/cn/pub/articles/oracle_php_cookbook/fuecks_paged.html
1function & paged_result(& $conn, $select, $start_row, $rows_per_page) {
2
3$sql = "SELECT
4 *
5FROM
6 (
7SELECT
8r.*, ROWNUM as row_number
9FROM
( $select ) r
WHERE
ROWNUM <= :end_row
)
WHERE :start_row <= row_number";
$stmt = oci_parse($conn,$sql);
oci_bind_by_name($stmt, ':start_row', $start_row);
// Calculate the number of the last row in the page
$end_row = $start_row + $rows_per_page - 1;
oci_bind_by_name($stmt, ':end_row', $end_row);
oci_execute($stmt);
// Prefetch the number of rows per page
oci_set_prefetch($stmt, $rows_per_page);
return $stmt;
}
应用这个方法,写出的临时使用的php语句类似于这样:
$select = "SELECT * FROM {$_DATABASE_TABLE_PREFIX_}toperate_log $where $order_by";
$sql = "SELECT * FROM ( SELECT r.*, ROWNUM as row_number FROM ( $select ) r WHERE ROWNUM <= ".($start + $limit)." ) WHERE $start <= row_number";
相关文章推荐
- PHP实现的oracle分页函数实例
- [转]php + Oracle 实现分页
- PHP实现的oracle分页函数实例
- ThinkPHP3.1.2的DbOracle.class.php不能实现分页的解决方法
- PHP常用功能-php实现分页
- jquery+PHP实现无刷新页面分页
- MySQL、SqlServer、Oracle三大主流数据库实现分页查询的方法
- Oracle分页实现
- sqlserver ,mysql,oracle 语句实现分页
- oracle12c JSON数据 使用SQL语句实现多表左外连接 显示无效数据 分页查询
- PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
- 基于PHP实现数据分页显示功能
- PHP实现的简单分页类及用法示例
- PHP 分页的实现的理论基础---MySQl的limit语句和count(*)语句 [原创]
- 有关oracle实现分页查询的方法
- php实现oracle操作
- PHP+jQuery+Ajax实现分页效果 jPaginate插件的应用
- oracle 分页的简单实现
- php+ajax实现无刷新数据分页的办法
- JQUERY+PHP实现无刷新页面分页 jq页面不刷新完成分页例子