我想只選擇$from
和$to
之間的差異,並使這些行以降序輸出。到目前爲止的問題是,我輸入'5'作爲$from
的值,'10'輸入$to
的值,但它似乎輸出10而不是5.MySQL查詢選擇太多行
請你能告訴我我要去哪裏錯誤?
$query = mysql_query("SELECT * FROM `Posts` WHERE `isPublic` = 'yes' ORDER BY `date` DESC LIMIT $from,$to") or die(mysql_error());
我想只選擇$from
和$to
之間的差異,並使這些行以降序輸出。到目前爲止的問題是,我輸入'5'作爲$from
的值,'10'輸入$to
的值,但它似乎輸出10而不是5.MySQL查詢選擇太多行
請你能告訴我我要去哪裏錯誤?
$query = mysql_query("SELECT * FROM `Posts` WHERE `isPublic` = 'yes' ORDER BY `date` DESC LIMIT $from,$to") or die(mysql_error());
查看結果:SELECT MySQL documentation。
你在做什麼LIMIT 5, 10
是LIMIT 10 OFFSET 5
的同義詞(得到10個結果從數據庫返回的集合的開頭跳過5個結果)。
它不是FROM和TO,它是FROM和HOWMANY。
你$to
變量實際上$length
是...
所以你告訴它以創紀錄的5和10顯示更多的開始。
MySQL的限制工作,如果你只提供一個值,它限制了條目的數量。如果您提供值,第一個是要從哪裏開始,第二個是要顯示的條目數。如果你希望顯示的條目從5到10,你需要第二個變量傳遞爲$to-$from
,像這樣:
$query = mysql_query("SELECT * FROM `Posts` WHERE `isPublic` = 'yes' ORDER BY `date` DESC LIMIT $from,".($from-$to)) or die(mysql_error());
你誤解如何LIMIT
作品。它預計首先是行偏移量(起始行號),然後是要返回的行數,現在是結束行數。而是使用
$from = 5;
$to = 5;
然而,這令人困惑想到第二值$to
當它的真正的行數。爲了清楚起見,將其稱爲$numrows
。
第二個限制參數是你想要的數量。
$difference = $to- $from;
LIMIT $from, $difference
這將輸出$difference
行從$from
開始。
第一個參數是偏移量,第二個參數是實際的限制值。所以如果你想跳過前5個結果並顯示下10個,你需要有LIMIT 5, 10