用PHP5.0 + oracle 10g,写了个最简单的分页,但是写出来后,分页就第一页能显示数据,后面的页就没有数据了。修改控制显示记录的参数,证明数据肯定是全部取到了。代码如下:
<?
include_once('conn.php');
$select_sql = "SELECT * FROM query_info";
$stmt = oci_parse($conn,$select_sql);
$rs = oci_execute($stmt);$pagesize = 3;   //定义每页显示多少条记录
$rescount = oci_fetch_all($stmt,$result);  //查询的所有数据#返回了多少条记录
$row = oci_num_rows($stmt);$page = $_GET['page'];              //$_GET[] 是一个接受自己参数的PHP变量?
$pagenum = ceil($row/$pagesize);    //总共需要显示多少页if(!isset($page)){
    $page = 1;          //如果分页变量不存在,则默认分页1
}$startcount = ($page - 1)*$pagesize;     //查询起始索引
#首先要在SQL语句是实现分页
$query = "select rs1.*
from (select rownum num,query_info.* from query_info where rownum <= $pagesize order by query_info.qi_id ) rs1
where rs1.num > $startcount";$query_qu = oci_parse($conn,$query);
$query_rs = oci_execute($query_qu);?>
<title>查询页面</title>
<html>
<body>
<table width="600" border="1" align="center">
  <tr>
    <td width="50"><a href="newSQL.html">新增<a></td>
    <td width="50"></td>
    <td width="50"></td>
    <td width="300"></td>
<td width="80"></td>
  </tr>
  <tr>
    <td  >id</td>
    <td>name</td>
    <td>page</td>
    <td>sql</td>
  </tr>
  <?
  while(oci_fetch($query_qu))   //获取下一行(对于 SELECT 语句)到内部结果缓冲区。 
  {
  ?>
  <tr>
    <td height="30px"><? echo oci_result($query_qu,"QI_ID");?></td>  
<!-- 返回由oci_fetch()的一行记录,中的某个字段(两个参数,前面是执行的SQL,后面是字段名) -->
    <td><? echo oci_result($query_qu,"QI_NAME");?></td>
    <td><? echo oci_result($query_qu,"QI_PAGE");?></td>
    <td><? echo oci_result($query_qu,"QI_SQL");?></td>
<td>修改 删除</td>
  </tr>
   <? }?>
</table>
<table width="600" border="1" align="center">
  <tr>
    <td align="center">
<? if($page == 1){?>
首页 上页
<? }else{ 
$prev = $page -1;
?>
<a href="?page=1">首页</a>
<a href="?page=<? echo $prev;?>">上页</a>
<? }?>

<? for($i;$i <= $pagenum;$i++){
?>
<a href="?page=<? echo $i;?>"><? echo $i;?></a> <!-- 在索引栏,显示具体的页码 -->
<? }
?>
<?
if($page < $pagenum){
$next = $page + 1;
?>
<a href="?page=<? echo $next;?>">下页</a>
<a href="?page=<? echo $pagenum;?>">末页</a> 
<? }else{?>
下页 末页
<? }?>
 
 总共<? echo $pagenum; ?>页 当前<? echo $page;?>第页 共条<? echo $row;?>记录</td>
  </tr>
</table>
</body>
</html>

解决方案 »

  1.   

    对于
    $query = "select rs1.*
    from (select rownum num,query_info.* from query_info where rownum <= $pagesize order by query_info.qi_id ) rs1
    where rs1.num > $startcount";
    rownum 应该是行号
    $pagesize 每页行数
    $startcount 起始行号那么,你只 rownum <= $pagesize 显然是不对的
    设 $page 为当前页号,则应为
    rownum <= $pagesize*$page