【问题标题】:Pagination not displaying PHP PDO分页不显示 PHP PDO
【发布时间】:2012-11-15 23:00:06
【问题描述】:

我试图对我的查询进行分页,但没有输出任何内容,任何人都可以看到我哪里出错了吗?我对 PHP/PDO 很陌生

else {
try
    {
    $per_page = '3';
    $result = $conn->prepare("SELECT * FROM directory WHERE user_active != ''");
    $rows = $result ->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 = $conn->prepare("SELECT * FROM directory WHERE user_active != ''");
    while($row = $query->fetch(PDO::FETCH_ASSOC)){
    echo '<br>' . $row['id'] . '<br>' . $row['First_Name'] . '<br>' . $row['Surname'] . '<br>';
    } ?>
    <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>';}
    }
    ####################### Close Database #######################
    $db = NULL;
    }
    catch(PDOException $e)
    {
    print 'Exception : '.$e->getMessage();
    } 
};

【问题讨论】:

  • 我在您的 SQL 查询中看不到任何类型的分页逻辑。 (即 LIMIT),所以这可能是您需要查看的内容。除此之外,您能否提供有关您遇到的错误的信息?或者根据您的调试工作,您的脚本哪里出了问题?另外,为什么要进行两次完全相同的查询?
  • 分页通常使用LIMIT 完成。检查dev.mysql.com/doc/refman/5.5/en/select.html 的限制。通常使用SELECT COUNT(*)检索记录数。

标签: php mysql pdo


【解决方案1】:

您从不execute 查询。

$result->execute();
$rows = $result ->fetchAll();

$query->execute();
while($row = $query->fetch(PDO::FETCH_ASSOC)){

【讨论】:

  • 这会导致我的页面不显示@musa
【解决方案2】:

另外,最好在查询中使用LIMIT。类似的东西:

//to get need page
$per_page = 3;
$page  = (isset ($_GET['page']))  ? (int) $_GET['page'] : 1 ;
$result = $conn->prepare(
    "SELECT * FROM directory 
     WHERE user_active != '' 
     LIMIT ".(($page - 1) *  $per_page).", ".$per_page
);
$result->execute();
$rows = $result ->fetchAll();

//to get count of pages
$result = $conn->prepare(
    "SELECT COUNT(*) FROM directory 
     WHERE user_active != ''"
);
$result->execute();
$total-pages = reset($result->fetch(PDO::FETCH_NUM));

【讨论】:

  • 不幸的是,这不会向浏览器输出任何内容@Tyranron
猜你喜欢
  • 2015-08-12
  • 2023-03-15
  • 2014-06-17
  • 2017-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多