2014-05-04 104 views
1

好吧這裏的技巧。 在查詢中,我從名爲messages的表中獲得正確的結果。 (它取由插入相反的順序時訂購的最後10條信息)這裏的查詢:以相反的順序從mysql_fetch_assoc()

$query = mysql_query("SELECT time, username, message 
         FROM messages ORDER BY time DESC LIMIT 10"); 

而不是後來這些消息通過AJAX打印內部格與

while ($item = mysql_fetch_assoc($query)) { 
    echo $item['time']." - ".$item['username']." - ".$item['message']; 
} 

但打印結果我只想按照相反的順序打印它們。 提示:如果我在ORDER BY子句中使用ASC,我沒有得到最後插入的消息。

這是可能的內部PHP?

回答

8

存儲你的數據&不是使用array_reverse

while($row = mysql_fetch_assoc($result)){ 
    $items[] = $row; 
} 

$items = array_reverse($items ,true); 

foreach($items as $item){ 
    echo $item['time']." - ".$item['username']." - ".$item['message']; 
} 
+0

這很酷,我不知道array_reverse。儘快標記爲答案 – al1en

+1

+1,完美答案:) – SagarPPanchal

2

我會親自使用子查詢。即時通訊有點肛門有關我的數據來自MySQL的完全如何我想要的,但array_reverse方法也能正常工作。這是我的例子:

$query = mysql_query("SELECT * FROM (
         SELECT time, username, message 
         FROM messages ORDER BY time 
         DESC LIMIT 10) result 
         ORDER BY time ASC 
        "); 
+0

我也嘗試過你的解決方案,但我收到一個錯誤「警告:mysql_fetch_assoc()期望參數1是資源,布爾給定在......」編輯:我知道它是語法錯誤,我發現muself。謝謝你的回答 – al1en

0

用途:array_unshift - 前置一個或多個元素添加到陣列

$items = array(); 

while($row = mysql_fetch_assoc($result)){ 
    array_unshift($items,$row); 
} 

foreach($items as $item){ 
    echo $item['time']." - ".$item['username']." - ".$item['message']; 
} 

繼承人無用的,但簡單的例子的開始。我希望它仍然存在:Simple example