2011-09-06 266 views
1

我需要得到最後5個結果,這就是爲什麼我通過Date DESC命令他們,但我需要顯示從較舊到較新的結果。我怎樣才能做到這一點?MySQL顯示顛倒順序的結果?

$data = mysql_query("SELECT * FROM Badges WHERE UID = '$user' ORDER by Date DESC LIMIT 5"); 

while($row = mysql_fetch_array($data)) 
    { 
    print "<img class='badge' title='" . $row['Site'] . "' src='http://getfavicon.appspot.com/http://" . $row['Site'] . "?defaulticon=1pxgif' />"; 
    } 
+0

[Limit results to last 10]可能重複(http://stackoverflow.com/questions/7306843/limit-results-to-last-10) –

回答

0
$data = mysql_query(" 
    SELECT * FROM (
     SELECT * FROM Badges WHERE UID = '$user' ORDER by Date DESC LIMIT 5) 
    t ORDER BY Date 
"); 

另外: 請使用變量$用戶mysql_real_escape_string(http://at2.php.net/manual/en/function.mysql-real-escape-string.php)。根據你從哪裏得到的信息可能是通過sql注入造成的安全漏洞。

+0

實際上,從 –

+0

@YourCommonSense獲取的位置並不重要:實際上,它取決於:如果變量設置爲2行之前,則不存在安全問題。只有$用戶以某種方式來自客戶端並且沒有深入檢查時,安全問題纔是。 –

2
$results = array(); 
while($row = mysql_fetch_array($data)) { 
    $results[] = $row; 
} 

$results = array_reverse($results); 

foreach ($results as $row) { 
    echo $row['Site']; // etc 
} 

手冊鏈接:http://php.net/function.array-reverse.php

+1

['array_reverse()'](http:// php .net/manual/en/function.array-reverse.php)不參考數組。您需要將返回的數組分配給某個地方。 – alex

+0

對,你發現錯誤比我輸入更快! – sanmai

0

實際上,你可以以同樣的查詢第二次。

我假定你有一個自動增量id(在這個例子中我將稱之爲'EntryId'),然後你希望得到你需要的東西?

SELECT * FROM Badges WHERE UID = '$user' ORDER by Date DESC, EntryId ASC LIMIT 5