从mysql_fetch_assoc()以相反的顺序回显

时间:2014-05-04 12:23:50

标签: php mysql

好的,这就是诀窍。 在查询中,我从名为messages的表中获取正确的结果。 (它按照相反的顺序提取按时间排序的最后10条消息)这里是查询:

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

而后来这些消息通过带有

的ajax打印在div中
while ($item = mysql_fetch_assoc($query)) {
    echo $item['time']." - ".$item['username']." - ".$item['message'];
}

但打印结果我只想按相反的顺序打印它们。 提示:如果我在ORDER BY子句中使用ASC,我就不会收到最后插入的消息。

这可以在php内部进行吗?

3 个答案:

答案 0 :(得分:9)

存储您的数据&而不是使用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'];
}

答案 1 :(得分: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   
                    ");

答案 2 :(得分: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