Php 以相反的方式显示来自数据库的消息

Php 以相反的方式显示来自数据库的消息,php,mysql,messages,limits,Php,Mysql,Messages,Limits,我正在努力使消息显示为这样 *旧信息 更快的消息 新消息 最新消息* 我试过几种不同的方法。把 SELECT * FROM place_chat WHERE whereto = '".mysql_real_escape_string($where)."' ORDER BY id DESC LIMIT 7" ^但这只是在顶部显示最新消息的结果,所以我尝试了这个 SELECT * FROM place_chat WHERE whereto = '".mysql_real_escap

我正在努力使消息显示为这样

*旧信息

更快的消息

新消息

最新消息*

我试过几种不同的方法。把

  SELECT * FROM place_chat WHERE whereto = '".mysql_real_escape_string($where)."' ORDER BY     id DESC LIMIT 7"
^但这只是在顶部显示最新消息的结果,所以我尝试了这个

  SELECT * FROM place_chat WHERE whereto = '".mysql_real_escape_string($where)."' ORDER BY     id ASC LIMIT 7" 
^但后来我发布了它,它只会显示最旧的消息,而不是调整它的显示方式,当然,并对它进行了测试。它只显示最早的消息


有人能解释一下这样做的方法吗?我已经尝试了一段时间了。

您需要先获取最新的7条记录,然后重新排序:

SELECT *
FROM
(
    SELECT *
    FROM place_chat 
    WHERE whereto = mysql_real_escape_string($where)
    ORDER BY id DESC
    LIMIT 7
) newest_place_chat
ORDER BY id ASC

由于您设置了标签'php',我假设您从php脚本中查询数据库,该脚本还将查询结果转换为输出,在本例中很可能是html表


您可以简单地改变在php中遍历结果数组的顺序。这样,您就不必更改查询中的任何内容

请你澄清一下,你只需要7条信息,如果有超过7条信息,它会显示什么,只有7条最新的信息?那么你想要的是倒序的最后7条信息…?是的,克雷格。很抱歉,我应该更清楚这一点。虽然可能,但最好直接从数据库中获得正确的结果。为什么?由于您必须遍历结果集,因此在速度或负载方面没有任何损失。恰恰相反:这样可以使查询更简单,因为不需要子选择。处理这些事情是数据库的工作。尽管查询看起来更复杂,但数据库执行操作的速度非常快。另外,如果你想在另一个页面或另一个平台上显示完全相同的数据,最好让查询按原样提供数据,而不是实现多个不同的查询后代码来颠倒结果的顺序。我确实理解你想要表达的意思。总的来说,我同意你的观点:保持数据源尽可能干净。但是,在这种情况下,不存在“多个”“不同”的实现。结果必须被遍历,没有额外的代码。零。你试图让它看起来更复杂,更接近实际情况。为什么?好吧,向后遍历数据库结果的唯一方法是使用mysqli_store_result或类似函数。正常遍历结果时,使用***_fetch_row函数之一,该函数始终按照从数据库接收的顺序遍历结果。所以我不同意“不会有额外的代码”,除非你能给我举个例子。数据库结果将按照从数据库接收的顺序进行处理。感谢您的回复。不过我用起来有点麻烦。我已经从SELECT*FROM SELECT*FROM place\u chat whereto='”。mysql\u real\u escape\u string($WHERE)。“'ORDER BY id DESC LIMIT 7)最新的\u place\u chat ORDER BY id ASC”但是,这似乎不起作用。@JordanRichards看起来您缺少子选择中的开括号。。。