反转SELECT查询中显示的数据的顺序

时间:2013-01-24 22:47:35

标签: php mysql

我的网站(感谢你们这里的许多人提供的帮助)设置为显示固定数量的更新(52),其中每个星期五,一个旋转,一个新的旋转。显示52个更新每页4页,共13页。它完美地运作。

但是,新更新显示在显示的更新的END处。我希望新的更新成为第一个人们会看到的。

这是我的问题:

$conn = dbConnect('query');
$updates = "SELECT update_id, update_title, update_desc, path
    FROM updates
    WHERE flag_live = ?
    ORDER BY update_id DESC
    LIMIT ?, ?";
$stmt = $conn->prepare($updates);
$stmt->bind_param('sii', $uLive, $offset, $limit);
$stmt->bind_result($uId, $uTitle, $uDesc, $uPath);
$stmt->execute();
$stmt->store_result();
$stmt->fetch();

我希望这些项目按照当前相反的顺序显示。如果我将ORDER BYDESC更改为ASC,则会选择一组我不想要的数据。因此,根据我的研究,我看到array_reverse()rsort可以做到这一点。我需要知道在这里正确使用array_reverse()的语法是正确的。

3 个答案:

答案 0 :(得分:0)

也许尝试这样的事情:

$results = $stmt->fetchAll();
$results = array_reverse( $results );

下一部分可以通过几种不同的方式完成,因此它实际上取决于您将如何使用结果并对它们进行分页。

您可以使用for循环:http://us3.php.net/manual/en/control-structures.for.php
foreachhttp://us3.php.net/manual/en/control-structures.foreach.php

答案 1 :(得分:0)

我不能与PHP相处,但这样的事情呢?

$results = $stmt->fetchAll();
$results = array_reverse( $results );
foreach ($results as $row)
{
  /* $row will contain each row in the reversed array one at a time. do your usual process-one-row logic here */
}

顺便说一句,如果你不知道PHP函数在调用它时会返回什么,那么有一个非常有用的调试函数var_dump。你可以在任何东西上调用它,它会以递归方式打印它所组成的内容。

http://au1.php.net/manual/en/function.var-dump.php

答案 2 :(得分:0)

好的,经过大量的轰动,我能够完成这项任务,虽然不是我在发布这个问题时考虑过的方式。我最后做的是编写一个子查询,它允许我颠倒每个页面上显示的更新的顺序,正如您所知,这只会颠倒页面上可见的四个更新的顺序,而不是整个顺序。选择了52个(见原始问题)。

下一步是“反转”我的分页系统......不是小任务......重写逻辑,测试代码等等。所以通过使用子查询反转事物并颠倒我的分页,我实现了我的目标。

她的所有建议都有助于最终结果,但不是预期的方式。如果这不像回答我自己的问题那样简洁,我会事先道歉。