【发布时间】:2017-08-19 22:57:29
【问题描述】:
我有一个系统可以自动对所有 mysql 查询使用 LIMIT 和 OFFSET 进行分页。
例子:
// Page 1
SELECT * FROM tbl_products WHERE category_id = 1 LIMIT 20 OFFSET 0
// Page 2
SELECT * FROM tbl_products WHERE category_id = 1 LIMIT 20 OFFSET 20
// Page 3
SELECT * FROM tbl_products WHERE category_id = 1 LIMIT 20 OFFSET 40
etc.
现在是问题本身。
A) 这是最好的方法吗?有其他选择吗?
B) 当我登陆一个产品页面 (products.php?id=12345) 并且在同一页面上会有一个产品列表时,如何在产品列表中选择正确的页面?如果这个产品恰好在产品列表的第 105 页?
这是为了突出显示列表中的“选定产品”。现在它只在产品恰好在第一页时才有效,第一页总是自动加载到 products.php 页面。
【问题讨论】:
-
首先,如果您有
limit子句,则必须始终包含order by子句。否则页面将不一致。 -
好吧,因为这里都是伪的,所以我跳过了它。它仍然会保持一致,因为它默认按 id 或按时间顺序排序。
标签: php mysql pagination