好的,这就是诀窍。 在查询中,我从名为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内部进行吗?
答案 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