while($data=$SQL->fetch(PDO::FETCH_ASSOC)){
echo $data=['message'];
}
可以反转while循环吗?我有一个页面回显消息,我需要反过来
SQL- DESC LIMIT 20 获取最后 20 条消息
但我的聊天框是反向打印的
message 1 (oldest message)
message 2
message 3 (newest message)
while($data=$SQL->fetch(PDO::FETCH_ASSOC)){
echo $data=['message'];
}
可以反转while循环吗?我有一个页面回显消息,我需要反过来
SQL- DESC LIMIT 20 获取最后 20 条消息
但我的聊天框是反向打印的
message 1 (oldest message)
message 2
message 3 (newest message)
您应该在原始 SQL 查询中定义数据集的顺序。
更新
似乎 OP 想要 20 条最新消息,但顺序相反。然后你需要像这样执行一个子查询:
SELECT `message`
FROM (SELECT * FROM `table`
ORDER BY `id` DESC
LIMIT 20) AS `i`
ORDER BY `i`.`id` ASC;
获取记录后您可以反转返回的数组
如果你真的想在 PHP 中反转数据,你可以使用array_reverse
:
// Fetch all records
$data = $SQL->fetchAll(PDO::FETCH_ASSOC);
// Reverse them
$data = array_reverse($data);
foreach ($data as $record) {
echo $record['message'];
}
虽然我建议使用 SQL 进行排序,因为它会更快。