プロが教えるわが家の防犯対策術!

PDOを使って、DBにある100レコードほどあるデータを
一覧表示させようと思っています。

$sqlTXT = "SELECT name,brith FROM table_name ORDER BY id LIMIT $st,$lim;";
$statement = $dbh->query("$sqlTXT");
$this->get_fetchAll = $statement->fetchAll(PDO::FETCH_ASSOC);

上記のような処理にて、10ページずつページ切り替え表示させたいのですが、
総レコード数をDBから引き出し方がわからず、
そのため、ページ切り替えをしたとき、最後のページの「次へ」ボタンを
消す処理ができないでいます。


PDOを使わないときは、「SELECT COUNT(*)~」で総レコード数をだせたので、
そこから1ページ辺りの件数で割って「次へ」ボタンを消す処理ができましたが、
PDOを使う場合は、どうやって総レコード数を出すことができるでしょうか?


また、PDOを使った最後のページの「次へ」を消す便利な方法があれば
教えてください。

A 回答 (1件)

$this->get_fetchAll


こいつを
count($this->get_fetchAll)
で、取得できた件数を知ることができますよ。


もちろん、
SELECT COUNT(*)~
でクエリ投げれば、count数取れますよ。


100レコード という比較的数の少ない場合は、取得してきた総レコードを PHPのcount()で数えればいいだけ。

数千、数万レコードになるのであれば、全部のレコードを取得してくると非常に処理が重くてへたすらタイムアウトするので、
一旦、SQLの COUNT(*) でレコード数を取得して、今現在のページ数分のLIMITをつけたSQLを生成してクエリーするほうが精神衛生面的にも、システム全体のパフォーマンスアップにもつながります

この回答への補足

ありがとうございます。

ただ、「count($this->get_fetchAll)」を実行すると、
Limtで設定したものしか読み込まないので全レコードを取得するために、
下記のようにしたら取得できました!

$SQLtxt = "SELECT COUNT(*) FROM table_name;";
$ss = $dbh->query($SQLtxt);
$count = $ss->fetchColumn();
print "レコード数:$count<BR>";

fetchColumn()を使ってますが、これでよいでしょうか?

補足日時:2008/06/17 17:34
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!