2009-12-28 33 views
1

我試圖從一個表,其記錄用戶獲取在PHP

這裏被輸入得到最後的7條從MySQL過去的7行是我的查詢:

$database->setQuery("SELECT * FROM #__mytable WHERE (user_id = '$uid')"); 
$dberr=""; 
if (!$database->query()) { 
    $dberr = $database->getErrorMsg(); 
} 

if(!$dberr==""){ 
    echo($dberr."<br>"); 
}else{ 
    $rows = $database->loadObjectList(); 

怎麼辦我循環通過$行獲得最後7個?

+0

我接受了一個答案,但我想答案包含了PHP代碼。 – ChuckO 2009-12-28 17:44:00

+0

您不需要對您的PHP代碼進行任何修改即可實現所描述的效果。只需在你的setQuery參數中替換你的SQL查詢。 – erenon 2009-12-28 17:48:03

回答

3
SELECT * 
FROM #__mytable 
WHERE user_id = '$uid' 
ORDER BY 
     entered_date DESC 
LIMIT 7 

爲了讓他們按升序排列,使用:

SELECT * 
FROM (
     SELECT * 
     FROM #__mytable 
     WHERE user_id = '$uid' 
     ORDER BY 
       entered_date DESC 
     LIMIT 7 
     ) q 
ORDER BY 
     entered_date 
2
SELECT * FROM #__mytable WHERE (user_id = '$uid') ORDER BY id DESC LIMIT 0,7 
5

你別:

SELECT * FROM ... WHERE ... ORDER BY user_id DESC LIMIT 7 
+1

爲什麼你要通過user_id命令轉發? – erenon 2009-12-28 17:16:07

+0

我認爲用戶ID是增量式和唯一的,因此可以很好地用作整個表的默認聚類順序。你必須按鍵排序,否則結果是不可預測的,並且會隨着平臺/數據庫引擎/庫版本/月相的不同而廣泛不同。 – mst 2009-12-28 17:48:05

+0

'@ mst':'user_id'在原始查詢中被過濾。 – Quassnoi 2009-12-28 17:51:46