1

MySQL データベースを使用して PHP で簡単なメッセージ ボードを作成しています。「LIMIT」操作でメッセージをページあたり 20 に制限しました。

私の URL の例は次のとおりです。http://www.example.com/?page=1

ページが指定されていない場合は、デフォルトで 1 になります。前述のとおり、1 ページあたり 20 の制限がありますが、それが 30 の可能な範囲外であり、2 ページを表示したい場合、10 の結果しか表示されません。この場合、クエリの LIMIT 部分は次のようになりますLIMIT 20,40- この場合、20 が返されるようにするにはどうすればよいですか?

これを可能な限り MySQL 側に保持することをお勧めします。

編集: 明確にするために、2 ページ目にいる場合、20 ~ 30 行をフェッチしますが、これは 10 行しかないため、代わりに 10 ~ 30 を選択します。

編集: 現在、次のクエリを使用しています。

私のクエリ:

SELECT MOD(COUNT(`ID`),20) AS lmt WHERE `threadID`=2;
SELECT * FROM `msg_messages` WHERE `threadID`=2 LIMIT 20-(20-lmt) , 40-(20-lmt) ;

これに一致するレコードは 30 件あります。

4

2 に答える 2

1

質問を本当に理解しているかどうかはわかりませんが、もしそうなら、最善の方法は、ユーザーが結果のないページに移動しないようにすることだと思います. これを行うには、 SQL_CALC_FOUND_ROWSを使用して "LIMIT" 句を使用している場合でも、合計で何行あるのかを簡単に確認できます。

たとえば、次のことができます。

Select SQL_CALC_FOUND_ROWS * from blog_posts where balblabla...

次に、次のような別のクエリを実行する必要があります。

Select FOUND_ROWS() as posts_count

合計行が非常に迅速に返されます。この結果と現在のページがわかれば、ユーザーに次/前のリンクを表示するかどうかを決定できます。

于 2012-06-18T18:20:52.117 に答える
0

次のことができます。

SELECT COUNT(*)/20 AS pages FROM tbl;

..ページの最大数を取得するには、部分的なセットが残るかどうかを調べ、それに応じてページング クエリを調整します。

于 2012-06-18T18:01:01.390 に答える