0
    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)
4

3 回答 3

3

您应该在原始 SQL 查询中定义数据集的顺序。

请参阅 ORDER BY 子句的文档

更新

似乎 OP 想要 20 条最新消息,但顺序相反。然后你需要像这样执行一个子查询:

SELECT `message` 
FROM (SELECT * FROM `table`
      ORDER BY `id` DESC 
      LIMIT 20) AS `i`
ORDER BY `i`.`id` ASC;
于 2013-10-31T10:25:05.117 回答
1

获取记录后您可以反转返回的数组

http://us1.php.net/array_reverse

于 2013-10-31T10:36:48.973 回答
0

如果你真的想在 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 进行排序,因为它会更快。

于 2013-10-31T10:37:34.297 回答