使用PHP分析MySQL结果

时间:2011-01-24 22:27:16

标签: php mysql pagination

如果输出很长,你会如何将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完成,但我该如何进行以下操作?

2 个答案:

答案 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']);