PHP MySQLi 分页限制问题
PHP MySQLi Pagination LIMIT issue
我目前正在开发一个分页脚本,用于显示每页上限为 20 条的记录。
我在 Stack Overflow 上发现了一个类似的问题,其中有一个如何执行此操作的示例。我已经尝试过代码并进行了调整,但我无法使其正常运行。
密码是:
$pages = ceil($rescnt['cnt']/$limit);
$page = min($pages, filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT, array(
'options' => array(
'default' => 1,
'min_range' => 1,
),
)));
$offset = ($page - 1) * $limit;
$start = $offset;
$end = min(($offset + $limit), $rescnt['cnt']);
MySQL 数据库中有 41 条记录 (0 - 40)。
第一页显示正确,带有 LIMIT 0,20
。但是,第二页的限制是 LIMIT 20,40
,实际上 returns 21 个结果。
脚本计算出总共应该有 3 页(P1 20,P2 20,P3 1)但是,P1 有 20,P2 有 21。P3 是空的。
我试过改变页面的计算方式等,但还是不行。谁能给我一些关于这个问题的见解?
提前致谢。
20到40是21条记录。你有一个错误。您应该从上一页的最后一条记录加 1 开始下一页。即 21,40
比如 1 到 2 即 1,2 是两条记录。
从 21 到 40,而不是 20。
LIMIT 子句具有包容性。来自第20条记录,第20条
限制 20,20 = 20,21,22,...37,38,39。
编辑:
您将看到 LIMIT 0,20 显示 20 行,但它们从零开始。就像数组键一样,这会在迭代中永久存在。
更好:
您正在更新错误的列。
前 20 个结果 = LIMIT 0,20
接下来的 20 个结果 = LIMIT 19,20
最终 20 个结果 = LIMIT 39,20
LIMIT <start row>, <row count>
我目前正在开发一个分页脚本,用于显示每页上限为 20 条的记录。
我在 Stack Overflow 上发现了一个类似的问题,其中有一个如何执行此操作的示例。我已经尝试过代码并进行了调整,但我无法使其正常运行。
密码是:
$pages = ceil($rescnt['cnt']/$limit);
$page = min($pages, filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT, array(
'options' => array(
'default' => 1,
'min_range' => 1,
),
)));
$offset = ($page - 1) * $limit;
$start = $offset;
$end = min(($offset + $limit), $rescnt['cnt']);
MySQL 数据库中有 41 条记录 (0 - 40)。
第一页显示正确,带有 LIMIT 0,20
。但是,第二页的限制是 LIMIT 20,40
,实际上 returns 21 个结果。
脚本计算出总共应该有 3 页(P1 20,P2 20,P3 1)但是,P1 有 20,P2 有 21。P3 是空的。
我试过改变页面的计算方式等,但还是不行。谁能给我一些关于这个问题的见解?
提前致谢。
20到40是21条记录。你有一个错误。您应该从上一页的最后一条记录加 1 开始下一页。即 21,40
比如 1 到 2 即 1,2 是两条记录。
从 21 到 40,而不是 20。
LIMIT 子句具有包容性。来自第20条记录,第20条
限制 20,20 = 20,21,22,...37,38,39。
编辑:
您将看到 LIMIT 0,20 显示 20 行,但它们从零开始。就像数组键一样,这会在迭代中永久存在。
更好:
您正在更新错误的列。
前 20 个结果 = LIMIT 0,20
接下来的 20 个结果 = LIMIT 19,20
最终 20 个结果 = LIMIT 39,20
LIMIT <start row>, <row count>