PDO分页查询未正确执行?

时间:2015-12-04 21:46:29

标签: php mysql pdo pagination

我目前正试图做一些分页工作,但没有任何成功。

我正在执行的第一个查询是获取所需的所有数据:所以第一个结果应该在第一页上,第二个结果在第二页上,依此类推......但我总是得到第一个结果。虽然我将查询复制到phpmyadmin中以手动设置查询,但它向我展示了正确的结果。

以下是一切都在发生的代码。我被困住了为什么它不起作用。

$page = isset($_GET['page']) ? $_GET['page'] : 1;
$limit = 1;
$start = 0;

$query = $db->prepare("SELECT * FROM `users` LIMIT $limit OFFSET $start");
$query->execute();

$result = $query->fetchAll(PDO::FETCH_OBJ);
$count = count($result);

$query2 = $db->prepare("SELECT * FROM `users`");
$query2->execute();
$result2 = $query2->fetchALL(PDO::FETCH_OBJ);
$count2 = count($result2);

// Pagination

$total = ceil($count2 / $limit);

if ($page > 1) {
    $start = ($page - 1) * $limit;
}

if ($page != $total) {

    $next_page = '<li><a href="index.php?cat=users&page=' . ($page + 1) . '">&raquo;</a></li>';

} else {

    $next_page = '<li class="disabled">&raquo;</li>';

}

if ($page > 1) {

    $previous_page = '<li><a href="index.php?cat=users&page=' . ($page - 1) . '">&laquo;</a></li>';

} else {

    $previous_page = '<li class="disabled">&laquo;</li>';

}

我做错了什么?

1 个答案:

答案 0 :(得分:3)

您对$page无所作为。查询中$start始终为0。

您需要定义每页需要多少条记录,然后将其乘以$ page -1,例如

$start = ($page - 1) * $records_per_page;