反向输出顺序


Reverse Output order

我有一个问题,我正在创建一个评论页面,但我想显示所有的结果上下颠倒,所以,最后发送的结果将最接近底部。但我还需要限制它显示的评论或消息的数量。我正在使用mysqli和php。

    $sql = "SELECT id, message FROM messages WHERE name = '$user' ORDER BY id DESC LIMIT 10";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "<div id='message'>" . $row["message"]. "</div> ";
    }
} else {
    echo "<p style='color:white;'>No messages have been sent</p>";
}

这样做的问题是它显示了我最后发送的消息在页面的顶部,而不是在底部

这里的一个选项是包装当前查询,然后将排序更改为ORDER BY id ASC:

$sql = "SELECT t.id, t.message FROM"
       ." (SELECT id, message FROM messages WHERE name = '$user' ORDER BY id DESC LIMIT 10)"
       ." ORDER BY t.id";

为了清楚起见,这里是一个更可读的查询版本:

SELECT t.id,
       t.message
FROM
(
    SELECT id, message
    FROM messages
    WHERE name = '$user'
    ORDER BY id DESC
    LIMIT 10
) t
ORDER BY t.id