2017-10-09 59 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