【问题标题】:Pagination using PDO with MySQL使用 PDO 和 MySQL 进行分页
【发布时间】:2012-03-27 10:58:51
【问题描述】:

我的分页有一些问题。我直接在我的数据库控制台上执行了查询并且工作正常..

public function method($arg, $db)//$db is a PDO connection link
{
    try
    {
        $next = $arg * 9;
        $top = 9;
        $sql = "SELECT col01, col02, col03 ";
        $sql .= "FROM table ";
        $sql .= "ORDER BY col01 ASC ";
        $sql .= ($next === 0)? "LIMIT ".$top : "LIMIT ".$next.", ".$top;    
        $return = $db->prepare($sql);
        $return->execute();

        $return->setFetchMode(PDO::FETCH_ASSOC);
        $this->minis = $return->fetch();
        return true;
    }
    catch(PDOExcepction $e)
    {
        return false;
    }
}

我做错了什么?

【问题讨论】:

  • 当您在最后一次连接后回显 $sql 时...打印什么?
  • 这是我为测试得到结果的查询所做的第一件事:SELECT col01, col02, col03 FROM table ORDER BY col01 ASC LIMIT 9(将其编辑为示例的值;它已使用 $arg=0) 进行了测试
  • 事实上,我复制了脚本创建的确切查询并将其粘贴到 mysql 控制台并执行它。效果很好!但是在浏览器上测试时只显示第一行
  • 您也应该在问题中提及问题

标签: php mysql pagination pdo


【解决方案1】:

您只返回第一行,因为您只调用了一次fetch()。在循环中调用它并将结果累积到一个数组中:

while ($row = $return->fetch()) {
  // Append the current row onto your array
  $this->minis[] = $row;
}
return true;

【讨论】:

  • FetchAll 在 pdo 中不需要 while 循环。
  • 是的,但有时给定数组的值比需要的多
【解决方案2】:

PDOStatement::fetch — 从结果集中获取下一行

http://php.net/manual/en/pdostatement.fetch.php

您只返回第一个结果,只需调用fetch()。您需要致电fetch,直到没有更多结果。再次阅读手册中的示例。

【讨论】:

    【解决方案3】:
    $this->minis = $return->fetchAll();
    

    它将返回多维数组中的所有数据。

    【讨论】:

      猜你喜欢
      • 2015-05-16
      • 1970-01-01
      • 1970-01-01
      • 2015-11-03
      • 2011-07-18
      • 1970-01-01
      • 2011-03-21
      • 1970-01-01
      相关资源
      最近更新 更多