2011-09-06 227 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