我正在使用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条记录。
答案 0 :(得分:1)
我不确定是否真的理解这个问题,但如果我这样做,我认为最好的方法是阻止用户访问没有结果的页面。为此,即使您使用SQL_CALC_FOUND_ROWS使用“LIMIT”子句,也可以轻松检查总共有多少行。
例如你可以这样做:
Select SQL_CALC_FOUND_ROWS * from blog_posts where balblabla...
然后你必须运行这样的另一个查询:
Select FOUND_ROWS() as posts_count
它会很快返回总行数。通过此结果并了解当前页面,您可以决定是否显示指向用户的下一个/上一个链接。
答案 1 :(得分:0)
你可以做:
SELECT COUNT(*)/20 AS pages FROM tbl;
..获取最大页数,然后确定是否要留下部分设置并相应地调整您的分页查询。