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

私の意見では、これは「それが価値があるもののために」、私が出会った中で最高のページ付けクラスです。たった4行のコードで実装できます。ページリンクを上下に設定し、ユーザーがページあたりの行数を選択できるようにします。

ページ付けクラスのリンク

于 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 インジェクションから保護するため、非常に重要です (詳細については、Google で検索できます)。

于 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 に答える