1

我对 OOP 和 PDO 还很陌生,并且无法弄清楚如何按页面显示 MYSQL 结果(例如每页 10 个)。最好的方法是什么?

    public function getResults() { 
    try {

        $con = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
        $con->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

        $sql = "SELECT * FROM table ORDER BY id DESC LIMIT 10";
        $result = $con->query($sql);

        while($row = $result->fetch(PDO::FETCH_ASSOC)) {
        $msg_id = $row['id'];
        echo '<div id="results">' .$msg_id. '</div>';
        }

      $con = null;   

     }catch(PDOException $e) {

     echo $e->getMessage();

     }

 }

}
4

3 回答 3

0

在我看来,“物有所值”,是我遇到的最好的分页课程。您只需四行代码即可实现它。它将在顶部和底部设置页面链接,并允许用户选择每页有多少行。

分页类链接

于 2012-12-13T02:04:28.747 回答
0

这似乎是一个好的开始。要获得下一组结果,您需要使用以下语句:

SELECT * FROM table ORDER BY id DESC LIMIT 10, 10

这将返回结果 11 到 20。

更一般地说,您希望有一个 GET 参数,使您能够显示任何集合:

http://mywebsite.com/mypage.php?set=1

然后,您将根据设置的数字动态构建查询:

$sql = sprintf("SELECT * FROM table ORDER BY id DESC LIMIT %s, 10", $con->quote($_GET['set'] - 1)*10));

关于引用的部分非常重要,因为它可以保护您免受 SQL 注入(您可以搜索它以获取更多信息)。

于 2012-12-13T01:47:39.057 回答
0

尝试向函数 getResults() 添加附加参数,附加参数将是$start, $count,然后在查询中使用这些变量

public function getResults($start, $count) { 
    try {

        $con = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
        $con->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
        $query = $con->prepare("SELECT * FROM table ORDER BY id DESC LIMIT :start, :count");
        $query->bindValue(':start', $start);
        $query->bindValue(':count', $count);
        $query->execute();

        while($row = $query->fetch(PDO::FETCH_ASSOC)) {
            $msg_id = $row['id'];
            echo '<div id="results">' .$msg_id. '</div>';
        }

       $con = null;   

    } catch(PDOException $e) {
         echo $e->getMessage();
    }

}
于 2012-12-13T01:50:01.163 回答