PHP+MySQLでページ分けするメモ

mysql php

PHP+MySQLで作っているシステムで、表示件数ごとにページ分けするときに困ったのでメモ。

例えば、1ページ10レコードずつ表示する場合、クエリーを↓のような感じにする。(1ページ目の場合)

クエリー1:
$result = mysql_query(“SELECT * FROM `mygoods` LIMIT 10”,$link);

これで表示する分のレコードを取得できるけど、ページ分けするには”LIMITがなかった場合に表示対象が何件あるか”がわからないと、正しくページ分けができない。

ので、新たに、

クエリー2:
$num = mysql_query(“SELECT `id` FROM `mygoods`”,$link);

とかやって、LIMIT無し版のクエリーも送信・・・っていうのがすごくめんどくさいし非効率だし複数条件になった場合に超ややこしいしでどうにかなんないのか!ともって調べて見たら良い方法がありました。

クエリー1を

$result = mysql_query(“SELECT SQL_CALC_FOUND_ROWS * FROM `mygoods`”,$link);

とやっておきます。

そんでもってそのすぐ後に

$num = mysql_query(“SELECT found_rows()”,$link);
list($num) = mysql_fetch_row($num);

ってやると、$numにLIMIT無しのときに取得できるレコード数が格納されるってわけです。

これならクエリー1を書き換えるだけで臨機応変に表示すべきページ数を変更できるし便利。
いちいちクエリー2のようなのをやるよりも動きが早くシステム負荷は少ないんだそう。

mysql, php」カテゴリの人気記事

  • 畑に咲いてた [PHP][MySQL]UPDATEの実行結果や該当数を取得確認する関数を作ってみた 48件のビュー
  • PHP+MySQLでページ分けするメモ 3件のビュー
  • アウトドア&フィッシング ナチュラム

    こちらもどうぞ

  • セローでキャンプツーリング!のキャンプ道具の積載
  • ホムセン箱 on セロー セローにホムセン箱を乗せる方法
  • Tamron SP 70-300mm F/4-5.6 Di VC USD (Model A005) 本体 Tamron SP 70-300mm F/4-5.6 Di VC USD (Model A005)を買ったので開封&レビュー
  • 死ぬまでに一度は渡りたい吊り橋「夢の吊り橋」に行ってきた(寸又峡)
  • 新しくなったNIKKOR 24-70mmだよ NIKKOR 24-70mmがリニューアル!新旧比較してみました