[英]MySQL Query selecting too many rows
我試圖只選擇$from
和$to
之間的差異$from
並按降序輸出這些行。 到目前為止的問題是我輸入'5'作為$from
值,'10'輸入$to
value,但它似乎輸出10而不是5。
請問你能告訴我哪里出錯了?
$query = mysql_query("SELECT * FROM `Posts` WHERE `isPublic` = 'yes' ORDER BY `date` DESC LIMIT $from,$to") or die(mysql_error());
它不是FROM和TO,而是FROM和HOWMANY。
看看這個: 選擇MySQL文檔 。
你正在做的LIMIT 5, 10
是LIMIT 10 OFFSET 5
的同義詞(從數據庫返回的集合的開頭跳過5個結果得到10個結果)。
MySQL限制的作用是,如果您只提供1個值,則會限制條目數。 如果提供值,則第一個是索引從哪里開始,第二個是要顯示的條目數。 如果您希望顯示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());
你的$to
變量實際上是$length
...
所以你要告訴它從第5項開始並再顯示10項。
你誤解了LIMIT
工作原理。 它首先要求行偏移(起始行號),然后是要返回的行數,現在是結束行號。 而是使用
$from = 5;
$to = 5;
然而,當第二個值確實是行數時,將第二個值想象為$to
令人困惑。 為了清楚起見,將其$numrows
。
第二個限制參數是您想要的數量。
$difference = $to- $from;
LIMIT $from, $difference
這將從$from
開始輸出$difference
行。
第一個參數是偏移量,第二個參數是實際限制值。 因此,如果你想跳過前5個結果並顯示接下來的10個,你需要有LIMIT 5, 10
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.