PHP分頁效率終結版(推薦)

來源:互聯網
上載者:User

這裡僅展示出設計思路,具體安全問題,是否同步更新等可根據具體需求添加修改:
以前人們常用的PHP分頁技術,通常都需要先統計出資料庫中總資訊條數才能判斷出總頁數並對其進行分頁,,也就是說,每次分頁要對資料庫進行兩次調用,在面臨大資料量,高並發查詢情況下是很不效率的,曾經一直為這個問題煩惱但都沒想到合適的解決方案,今天突然在睡夢中 遇見奇蹟...具體分析原理如下:(紅色部分為最佳化後的區別,思路採用最原始的代碼書寫,為了照顧新人)
原始分頁技術:包括許多開來源程式也在使用的技術;
一般都是對資料庫資訊進行統計,然後調用分頁類,進行分頁,,每次都要經過2次資料庫查詢操作
例(原始分頁技術):  每次都要進行2次資料庫查詢 複製代碼 代碼如下:    $sqlstr="select  count(*)  as total  from  tablename";
    $sql=mysql_query($sql) or die("error");
 $info=mysql_fetch_array($sql);  //第一次 資料庫調用
    $total=$info["total"];//每次翻頁都要進行 總資訊條數 的資料庫查詢操作
    $pagesize=10; //每頁顯示數量
    $page=$_GET["page"]?max(intval($_GET["page"]),1):1;//當前頁
    if($total){,
      $sql="select * from  tablename  limit "($page-1)*$pagesize",$pagesize";
      $sql=mysql_query($sql) or die("error");//第二次資料庫查詢操作
      $info=mysql_fetch_array($sql);
   do{
    ...............
            }while($info=mysql_fetch_array($sql));
            include("page_class.php");//調用分頁類
            $url="url.php?page=" //假設當前頁為 URL.PHP
            echo $get_page=new get_page($url,$total,$pagesize,$page); //URL 為要分頁的URL地址
   }
   //最佳化後的分頁技術(只需在第一次調用時進行資訊統計即可)
    if(isset($_GET["total"])){   //只需要進行一次總資訊條數的統計即可
   $total=intval($_GET["total"]);
 //以後的的總資訊數量通過GET傳遞即可,節省了1/2的資料庫負荷,,,,
    }else{
      $sqlstr="select  count(*)  as total  from  tablename";
      $sql=mysql_query($sql) or die("error");
   $info=mysql_fetch_array($sql);  //第一次 資料庫調用
            $total=$info["total"];
    }//總資訊條數
    $pagesize=10; //每頁顯示數量
    $page=$_GET["page"]?max(intval($_GET["page"]),1):1;//當前頁
    if($total){
      $sql="select * from  tablename  limit "($page-1)*$pagesize",$pagesize";
      $sql=mysql_query($sql) or die("error");//第二次資料庫查詢操作
      $info=mysql_fetch_array($sql);
   do{
    ...............
            }while($info=mysql_fetch_array($sql));
            include("page_class.php");//調用分頁類
   $url="url.php?total=$total&page=" //假設當前頁為 URL.PHP
            echo $get_page=new get_page($url,$total,$pagesize,$page); //URL 為要分頁的URL地址
   }
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.