如果输出很长,你会如何将MySQL结果拆分为'next'和'previous'?
$data = mysql_query("SELECT * FROM table WHERE ... AND ...")
or die(mysql_error());
while($info = mysql_fetch_array( $data ))
{
echo $info['value'];
}
哪里的值会从1到10列出,然后转到下一个?第一页可以使用LIMIT 10
完成,但我该如何进行以下操作?
答案 0 :(得分:5)
SELECT * FROM table WHERE ... AND ... LIMIT 10 OFFSET 10
我更喜欢使用OFFSET字,因为它更具可读性。
还要记住偏移量是基于0的(返回的第一行的偏移量是0,而不是1)。所以LIMIT 10 OFFSET 10将返回10到19行。
答案 1 :(得分:4)
您可以在LIMIT子句中指定偏移量:
LIMIT 0, 10
LIMIT 10, 10
LIMIT 20, 10
...
因此,在构建LIMIT子句时,您的代码应如下所示:
$offset = ($current_page - 1) * $items_per_page;
$sql = "[...] LIMIT $offset, $items_per_page";
当然,您必须确保$current_page
为>= 1
。但这很容易做到:
$current_page = empty($_GET['current_page']) ? 1 : max(1, (int)$_GET['current_page']);