查询是:
SELECT * FROM `news` ORDER BY `id` LIMIT ($curr_page * 5), ( ($curr_page * 5) + 5 )
其中 $curr_page
是一个 php 变量,它从 $_GET['page']
获取值
我想分页(每页 5 条新闻),但我不知道为什么 mysql 会返回额外的值。
在第一页上结果正常:$curr_page = 0
查询将是:
SELECT * FROM `news` ORDER BY `id` LIMIT 0, 5
但在第二页上,查询结果添加了额外的新闻,10 条而不是 5 条。
第二页查询:
SELECT * FROM `news` ORDER BY `id` LIMIT 5, 10
怎么了?为什么结果有 10 个值而不是 5 个?
谢谢!
最佳答案
LIMIT 语句的语法是:
LIMIT [START_ROW], [COUNT]
所以,你的代码应该是:
SELECT * FROM `news` ORDER BY `id` LIMIT ($curr_page * 5), 5
想要添加,但不知道表的结构:通常“新闻”按发布日期而不是 ID 排序。如果表中有发布日期字段,那么它会产生比 id 更合适的排序列,这对用户来说毫无意义。假设id是自动递增的,您输入文章的顺序可能并不总是反射(reflect)正式的发布日期。
文档
- MySQL 的 SELECT 语法 - http://dev.mysql.com/doc/refman/5.0/en/select.html
关于php - mysql分页结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11364869/