43

MySQL テーブルに 50 行あるとします。最初の 10 個 ( LIMIT 10) を選択したいのですが、別のページで次の 10 個を選択できるようにしたいと考えています。

では、行 10 の後に選択を開始するにはどうすればよいでしょうか。

更新されたクエリ:

mysql_query("
    SELECT * FROM `picdb`
    WHERE `username` = '$username'
    ORDER BY `picid` DESC
    LIMIT '$start','$count'
")
4

4 に答える 4

76

以下を使用して最初のページを取得することをお勧めします。

LIMIT 0, 10

次に2ページ目

LIMIT 10, 10

それから

LIMIT 20, 10

3 ページ目など。

于 2009-08-10T00:26:56.610 に答える
29
LIMIT 10

LIMIT 10 OFFSET 10

構文に関するMySQL 5.1ドキュメントSELECTから:

PostgreSQL との互換性のために、MySQL は LIMIT row_count OFFSET オフセット構文もサポートしています。

于 2009-08-10T00:31:36.377 に答える
1

この質問は古いですが、ハードコーディングされていないコードを追加したいだけです。混乱が与えた答えは、スクリプトをハードコーディングする必要があることを意味します(Selectステートメント)。Select ステートメントをハードコーディングせずに、ファイル名を取得し、現在のページに基づいてデータベースからデータを選択することで、同じ結果を得ることができます。最初に現在のページを取得します

$page = basename($_SERVER['SCRIPT_FILENAME']);
$page_counter = rtrim($page, ".php");
//setting your limit
$start = 0;
$limit = 10;
//if current page is not index.php then $start = ($limit * page_counter); 
// e.g if current page is 1.php then $start = ($limit * 1) = 10
//if current page is 2.php then $start = ($limit * 2) = 20
if ($page !== 'index.php') {

 $start = ($limit * $page_counter);
}
//getting row count
$ROW_COUNT = $db->query('SELECT * from tableName')->rowCount();

//getting number of rows left in the table
$rows_left = ("SELECT * FROM tableName limit ?,?");
$rows_left = $db->prepare($rows_left);
$rows_left->execute(array($start,$ROW_COUNT));
$rows = $rows_left->fetchAll(PDO::FETCH_ASSOC);

$number_rows = 0;
foreach ($rows as $r) {
 $number_rows = $number_rows + 1;
 }
 //if number of rows left in the table is less than 10 then $limit = the number of rows left
 if ($number_rows < 10) {
 $limit = $number_rows;
 }

 //getting all rows
            $getRows = "SELECT * FROM tableName limit ?,?";
            $getRows = $db->prepare($getRows);
            $getRows->execute(array($start , $limit));
            $getRows = $getRows->fetchAll(PDO::FETCH_ASSOC);
于 2014-07-23T01:48:35.970 に答える