簡體   English   中英

MySQL Query選擇了太多行

[英]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, 10LIMIT 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM