天道酬勤,学无止境

从 mysql_fetch_assoc() 以相反的顺序回显(echo in reverse order from mysql_fetch_assoc())

问题

好的,这就是诀窍。 在查询中,我从名为 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里面做吗?

回答1

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

我个人会使用子查询。 我对让我的数据完全按照我想要的方式从 MySQL 中输出有点array_reverse ,但是array_reverse方法也可以正常工作。 这是我的例子:

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

使用: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'];
}

这是一个无用但快速的例子。 我希望它仍然存在:简单的例子

标签

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐