2017-10-09 8 views
-3

私は最近の5つの結果を把握しているので、私はクエリでDATE DESCをORDER BYする必要があります。私は私の結果を持っていた後選択した後に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)): 

はしかし、私は、変数にmysqli_fetch_Array($のcommentquery)を配置し、配列の逆をやってみました、私の5 results.Iの古いものを通じて秩序とループを逆にしたいと思いますそれを行う方法ではないようです。

+0

サンプル – Krish

+1

の配列をダンプすることができます。正確に試したものを投稿する必要があります。すべての行を取得して、 'array_reverse()'を実行すると、ループの最後に項目がポップするように、あなたの問題は確実に解決されます。 – jeroen

+0

確かに_all_結果のエントリをメモリにフェッチして、上下にだけでなく好きな方法で繰り返し処理することができます。しかし、この方法は、結果をメモリに保持する必要があるため、明らかに拡大縮小されません。より大きな結果セットのためにスケールする方法で結果エントリを処理できるようにするには、結果をSQL Serverに保持し、一度に1つのエントリのみをフェッチして処理する必要があります。つまり、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

関連する問題