2017-10-09 60 views
-3

所以我需要在我的查询中排序日期DESC,因为我抓住了5个最近的结果。是否可以在选择后颠倒msyqli_query的顺序?

$commentquery=mysqli_query($con,"SELECT * FROM user_comments WHERE 
content_id='$storyid' ORDER BY date DESC LIMIT 5 "); 
while ($comment=mysqli_fetch_array($commentquery)): 

然而,当我有我的结果,我想通过最古老的扭转顺序和循环到最新我5 results.I的尝试放置mysqli_fetch_Array($ commentquery)在变量和操作的方式的阵列反向,但似乎没有办法做到这一点。

+0

你可以转储数组作为示例 – Krish

+1

你应该发布你已经尝试过的东西;获取所有行并执行'array_reverse()'将肯定能解决您的问题,就像在循环中弹出数组末尾的项目一样。 – jeroen

+0

当然,您可以将_all_结果条目读入内存,然后以任何您喜欢的方式遍历它们,而不仅仅是向上和向下。但是这种方法不会显着扩展,因为你必须在内存中保存_all_结果。为了能够以扩展更大的结果集的方式处理结果条目,您需要将结果保留在sql服务器中,并且一次只提取和处理一个条目。这意味着你需要改变sql查询定义顺序的方式。 – arkascha

回答

3

进行查询,查询当前选定记录的结果。

SELECT * FROM 
    (SELECT * 
    FROM user_comments 
    WHERE content_id='$storyid' 
    ORDER BY date DESC LIMIT 5) last_five_comments 
ORDER BY date ASC 
+0

谢谢每个人都为你的答案 - 但这是最​​简单的和完美的工作。只需在子查询中选择,然后按我需要的方式排序子查询结果。简单!!!谢谢!! –

0

虽然我不明白为什么你不只是颠倒你的查询的排序顺序,那里有一个方法。

$commentquery=mysqli_query($con,"SELECT * FROM user_comments WHERE content_id='$storyid' ORDER BY date DESC LIMIT 5 "); 
$count = mysqli_num_rows($commentquery); 
while ($count > 0) { 
    $count--; 
    mysqli_data_seek($commentquery, $count); 
    $comment = mysqli_fetch_array($commentquery): 

    // do things with $comment 
} 
+0

颠倒查询的排序顺序并获取5 *最后*项目并不像看起来那么直截了当:-) – jeroen

+0

我刚刚重读了这个问题,并且您是对的:) – rickdenhaan