我写这个php+mssql分页代码,能经受大数据量的考验吗
<?php
//连接数据库
$myServer = "192.168.0.123"; //主机
$myUser = "sa"; //用户名
$myPass = ""; //密码
$myDB = ""; //MSSQL库名
$s = mssql_connect($myServer, $myUser, $myPass) ;
$d = mssql_select_db($myDB, $s);
//分页信息\
$biao="yonghujiben";
$xianshi=30;//每页显示的条数
//打开用户表,这个表主要是计算又总共又多少条记录,能分几页
$sql="select * from $biao";
$query= mssql_query($sql);
$zongshu=mssql_num_rows($query);
$yeshu=ceil( $zongshu/$xianshi);//去当前小数的最大整数
echo "共有 $yeshu 页";
if ($page=="" or $page>$yeshu or $page<0 or $page==0) { $page2=1; }
else
{
$page2=intval($page);//将页码转换为数字
}
//$page2=intval($page);//将页码转换为数字
echo $seek=$xianshi*($page2-1);
echo "<br>";
echo $xianshi;
$top_shuzi=$page2*$xianshi;
//这个表用户显示数据
$sql_e="SELECT top $top_shuzi * from $biao";
$query_e= mssql_query($sql_e);
echo "<br>";
mssql_data_seek($query_e,$seek);
while($rs=mssql_fetch_object($query_e))
{
//print_r($row);
echo $rs->qq;
echo "<br>";
}
?>
<?php
$xianshiye=8;//显示当前页面一次显示几页
$i=$xianshiye+($page2-1);
if ($i>$yeshu)
{ $i=$yeshu;}
if ($page2>1)
{
$shangyiye=$page2-1;
echo" <a href='$PHP_SELF?page=$shangyiye '>上一页</a>\n";}
if ($page2-$xianshiye<1 or $page2-$xianshiye==0 )
{
$qq=1;
}
else
{
$qq=$page2-$xianshiye;
}
for($y=$qq;$y<=$page2-1;$y++)
{
echo "<a href=$PHP_SELF?page=$y>[$y]</a>\n";
}
for($y=$page2;$y<=$i;$y++)
{
echo str_replace("<a href=$PHP_SELF?page=$y>[$page2]</a>", " <strong> $y </strong>", "<a href=$PHP_SELF?page=$y>[$y]</a>\n");
//echo "<a href=$PHP_SELF?page=$y>$y</a>\n";
}
if ($page2==$yeshu)
{ }
else
{
$xiayiye=$page2+1;
echo" <a href='$PHP_SELF?page=$xiayiye '>下一页</a>";}
?>
补充:下面2的答案,是不是这个意思, 我先用count(*) 统计一下这个表里总共又多少行记录,然后建立一个临时字段,然后再把这个临时字段的数值给读出来,用于分页页数的计算
我改成这样可以吗
$sql="select count(*) 临时字段 from 表";
3的回答好像是mysql数据里的limit把,sql数据库里没有这个东西,
要是数据库里又个几百万条记录,用这个回不回慢
答案:经不住大数据量的考验。
建议将
$sql="select * from $biao";
$query= mssql_query($sql)
改为
$sql="select count(*) from $biao";
$query= mssql_query($sql)
其他:能 不能,太普通了,请分析一下sql 中 limit的用法。
也就是利用limit(x,y)的方法读取部分记录。
如果你可以独立写出上面的代码的话。我相信写一个SQL的也不会很难。
上一个:大流量网站,用ASP+MSSQL开发好,还是用php+mysql开发好?
下一个:MSSQL 2005与2000同步的问题