我想实现记录的分页显示,
$page=$_GET['page'];//获取页码
$pagenum=10;//每页的记录数
$sql="select count(*) as num from t_name where ……";
$results=mysql_query($sql);
$row=mysql_fetch_array($results);
$num=$row['num'];//获取总记录数
$sql="select * from t_name where …… limit ".($page-1)*$pagenum." , ".$pagenum;
$results=mysql_query($sql);
$row=mysql_fetch_array($results);
……
我感觉这样为了获得总数和获取每页显示的数据把数据库查询了两遍,不太好,
大家有没有更好的写法?

解决方案 »

  1.   

    可以一个子把所有的查出来
    count($row)得到总数
    然后在$row中取当前页的记录但当记录量大的时这种方法不好
      

  2.   

    在你的SELECT语句中加上修饰SQL_CALC_FOUND_ROWS 试一下。 加上SQL_CALC_FOUND_ROWS之后,即使你用了limit n,m ,SELECT FOUND_ROWS() 仍会返回满足条件记录的总数。这样,你执行完 select SQL_CALC_FOUND_ROWS  之后,再取一下记录总数就行了。 参见 下贴 #31楼
    http://topic.csdn.net/u/20090522/09/bb244d6e-528f-45f4-8829-dfa955c5ba82.html?8703
      

  3.   

    奇怪了,设置SQL_CALC_FOUND_ROWS后,在mysql窗口数据结果显示正常
    但我将同样的语句放在toad for mysql上,执行select found_rows()显示的结果却对不上了