2010-08-22 49 views
0
$data = mysql_query("SELECT * FROM phpbb_posts ORDER BY post_id DESC LIMIT 4") 
or die(mysql_error()); 

上面是我的代碼,我遇到了Limit部分的問題。
當我第一次設置它,似乎一切都完美,但我可以回來了幾個小時,並在頁面再看看和不同數量的記錄可以顯示即使代碼是完全相同的MYSQL限制不一致

任何想法如何解決這個問題?

+2

你是指「不同數量的記錄」是什麼意思?多少? 3? 5? 0? – 2010-08-22 18:07:18

+3

我們需要查看代碼的其餘部分。該查詢將始終返回四個或更少的結果;你的問題不在這裏。 – Borealid 2010-08-22 18:07:45

回答

3

數據不同,因爲自上次檢查頁面以來發布的帖子越多。您在post_id訂購,其中最高價值將是最近的帖子。

保留以前記錄的最簡單方法是緩存數據 - 存儲它。但是,然後緩存需要知道何時刷新緩存 - 否則它永遠不會改變。

如果有日期/時間列,您可以使用它來在應用LIMIT之前過濾結果。但它必須足夠寬才能獲得至少四條記錄。與日期相同的問題需要考慮 - 在某些時候,您希望這些日期發生變化,或者頁面提供的數據永遠不會改變。

+0

在MySQL中不會限制總是指向返回的記錄數量?爲什麼排序問題除了確定返回哪些記錄,而不是數字? – Tahbaza 2010-08-22 18:09:14

+1

@Tahbaza:「LIMIT」與問題無關 - 問題在於數據不斷變化。 LIMIT可能是4,10,100等等,問題仍然是一樣的 - 每一次刷新頁面,第一行與以前不一樣(除非沒有人在創建帖子)。 – 2010-08-22 18:13:42

+0

他指定的順序無關緊要,結果集總是有4行。問題必須在下面幾行(假設OP得到5,6,3,8個結果而不是4)。 – Ben 2010-08-22 18:14:00

0

您不指定返回多少記錄與您有關。 LIMIT應該返回4條記錄的最大值,如果沒有至少4條記錄會被您的查詢返回,則返回最少值。如果你有超過4條記錄返回,那麼你有問題。