1

我正在使用 MySQL 数据库在 PHP 中制作一个简单的留言板。我使用“LIMIT”操作将消息限制为每页 20 条。

我的网址的一个例子是:http://www.example.com/?page=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 回答