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