找了一些实现的代码,都或多或少有点问题。
主要问题在于:
- 在进行一页数据查询时的sql语句格式问题,
- 开始尝试使用limit关键字查询,错误,limit用于mysql;
- 接着使用ROWNUM、row_number(),有的博客写这两个方法是oracle和sqlserver公用的,但测试失败;
- 最后用top 和 not in关键字做查询。
- 解决这个问题之后,发现sqlsrv_num_rows()函数报错,参考sqlsrv驱动API文档发现:
<?php $page=$_GET["page"]+0; $page= $page<=0 ? 1 : $page; //避免$_GET["page"]为负数和0的情况 //分页尺寸 $page_size=30; $sql1 = sqlsrv_query($conn, $sql, array(), array( "Scrollable" => 'static' )); $rows = sqlsrv_has_rows($sql1); //计算总行数 $total_records=sqlsrv_num_rows( $sql1 ); //总页数 $total_page=ceil($total_records/$page_size); //进一法取整,避免最后一页不满$page_size, $page=$page>$total_page?$total_page:$page; //避免$_GET["page"]大于总页数 //翻页链接开始 $page_link=""; if ($total_page>1) { $page_link="<a>一共{$total_page}页</a>"; $page_link.="<a>当前第{$page}页</a>"; $page_link.="<a href=?page=1>首页</a>"; if ($page>1){ //页码大于1的时候,显示上一页翻页链接 $pre_page=$page-1; $page_link.="<a href='?page=$pre_page'><<</a>"; } //翻页列表 for ($i=1;$i<=$total_page;$i++) { if ($i==$page) { //高亮当前页页码 $page_link.="<a href='?page=$i' class='currentpage'>$i</a>"; } else { $page_link.="<a href='?page=$i'>$i</a>"; } } //页码小于总页数的时候显示下一页翻页链接 $next_page=$page+1; if($next_page<$total_page) { $page_link.="<a href='?page={$next_page}'>>></a>"; } $page_link.="<a href='?page=$total_page'>最后一页</a>"; } //输出记录 $offset=($page-1)*$page_size; $start = $offset; $pagesize = $page_size; $sqls = "select top $pagesize o.*from ($sql) as o where id not in(select top $start id from ($sql) as oo order by id asc) order by id asc" ; $rst_view = sqlsrv_query($conn, $sqls); if( $rst_view === false) { echo "Error in query preparation/execution. "; die( print_r( sqlsrv_errors(), true)); } while($row_show = sqlsrv_fetch_array($rst_view)){ ?> <tr> <td><a href="#" onclick="javascript:Wopen=open('showinfo.php?id=<?php echo $row_show[1]; ?>','','height=720,width=620,scrollbars=no');"><?php echo $row_show[1]; ?></a></td> <td><?php echo $row_show[2]; ?></td> <td><?php echo $row_show[3]; ?></td> <td><?php echo $row_show[5]; ?></td> <td><?php echo $row_show[7]; ?></td> <td><?php echo $row_show[12]; ?></td> </tr> <?php } } ?> </tbody> </table> </div> <?php echo "<div class='page'>$page_link</div>"; ?>
解决问题过程中参考一下网页: