出力が非常に長い場合、MySQLの結果を「次へ」と「前へ」にどのように分割しますか?PHPによるPHP結果のページング
ここで、値は1から10までリストされ、次に次に進みますか?最初のページはLIMIT 10
で行うことができますが、私は次のようにしますか?
出力が非常に長い場合、MySQLの結果を「次へ」と「前へ」にどのように分割しますか?PHPによるPHP結果のページング
ここで、値は1から10までリストされ、次に次に進みますか?最初のページはLIMIT 10
で行うことができますが、私は次のようにしますか?
SELECT * FROM table WHERE ... AND ... LIMIT 10 OFFSET 10
が、私はそれをもう少し読みやすいという理由だけオフセット・ワードを持つことを好みます。
また、オフセットは0ベースであることに注意してください(返される最初のローのオフセットは0であり、1ではありません)。ですから、LIMIT 10 OFFSET 10は10行目から19行目を返します。
あなたはLIMIT句のオフセットを指定することができます:LIMIT句を構築する際
LIMIT 0, 10
LIMIT 10, 10
LIMIT 20, 10
...
だからあなたのコードは、そのようになります。もちろん
$offset = ($current_page - 1) * $items_per_page;
$sql = "[...] LIMIT $offset, $items_per_page";
を、あなたのことを確認する必要があります$current_page
は>= 1
です。しかし、それは簡単に行えます:
$current_page = empty($_GET['current_page']) ? 1 : max(1, (int)$_GET['current_page']);
ありがとう、私が探していたものでした。 – Alfie
MySQLはOFFSETをサポートしていますか? LIMIT x、y構文IMOよりもはるかに良い。 – ThiefMaster
私はOFFSETの方がいいですか? – Alfie
それは(バージョン5のとにかく)です。 http://dev.mysql.com/doc/refman/5.0/en/select.html機能的な違いはありませんAlfieは、コードを他の誰かに少し読みやすくしていますが、ThiefMasterが書き込んだ変数名があればそれはどちらがどちらであるかを示します。 – photon