首页 > 编程 > PHP > 正文

PHP实现的oracle分页函数实例

2020-03-22 17:04:41
字体:
来源:转载
供稿:网友
本文实例讲述了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- $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 = html' target='_blank'>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程序设计有所帮助。PHP教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表