2011-06-15 116 views
4

我想只選擇$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()); 

回答

7

查看結果:SELECT MySQL documentation

你在做什麼LIMIT 5, 10LIMIT 10 OFFSET 5的同義詞(得到10個結果從數據庫返回的集合的開頭跳過5個結果)。

9

它不是FROM和TO,它是FROM和HOWMANY。

0

$to變量實際上$length是...

所以你告訴它以創紀錄的5和10顯示更多的開始。

1

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()); 
0

你誤解如何LIMIT作品。它預計首先是行偏移量(起始行號),然後是要返回的行數,現在是結束行數。而是使用

$from = 5; 
$to = 5; 

然而,這令人困惑想到第二值$to當它的真正的行數。爲了清楚起見,將其稱爲$numrows

0

第二個限制參數是你想要的數量。

$difference = $to- $from; 

LIMIT $from, $difference 

這將輸出$difference行從$from開始。

0

第一個參數是偏移量,第二個參數是實際的限制值。所以如果你想跳過前5個結果並顯示下10個,你需要有LIMIT 5, 10