我试图从我的数据库中返回所有记录并相应地对它们进行分页,
我有以下内容我已经成功地从一个教程中拼凑起来它似乎没有输出任何东西到我的浏览器所以我认为我的语法错误?
// No County Selected
try
{
$per_page = '3';
$res = $conn->prepare("SELECT * FROM directory WHERE user_active != ''");
$rows = $res ->fetchAll();
$total_records = count($rows);
$pages = ceil($total_records / $per_page);
$page = (isset ($_GET['page'])) ? (int) $_GET['page'] : 1 ;
$start = ($page - 1) * $per_page;
$query = $db->query("SELECT * FROM directory LIMIT $start , $per_page");
while($row = $query->fetch(PDO::FETCH_ASSOC)){
echo '<br>' . $row['id'];
} ?>
<br><br>
<?php
if ($pages >= 1 && $page <= $pages){
//if ($page>1 && $page <= $pages){$previous=($page -1); echo '<a href="?page=' .$previous. '">Previous</a>';}
for($x=1; $x<=$pages; $x++){ echo ($x == $page) ? ' <strong><a href="?page='.$x.'">'.$x.'</a></strong> ' : ' <a href="?page='.$x.'">'.$x.'</a> ';}
//if ($page>1 && $page <= $pages){ $next=($page+1) ; echo '<a href="?page=' .$next. '">Next</a>';}
}
答案 0 :(得分:0)
您的查询存在逻辑缺陷。您用于获取总计数的查询之间的条件不匹配:
SELECT * FROM directory WHERE user_active != ''
以及用于获取有限(分页)行的查询:
SELECT * FROM directory LIMIT $start , $per_page
两个查询都应该共享相同的条件。此外,第一个查询应仅COUNT
行,而不是全部返回:
SELECT COUNT(1) FROM directory WHERE user_active != ''
然后,您将在第一个结果行的第一列中找到行数(计数)。