2017-10-09 3 views
-3

J'ai donc besoin de COMMANDER PAR DATE DESC dans ma requête, car je saisis les 5 résultats les plus récents.Est-il possible d'inverser l'ordre d'une requête msyqli après la sélection?

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

Cependant, après que j'ai mes résultats, je voudrais inverser l'ordre et la boucle à travers le plus ancien au plus récent de mon 5 results.I essayé de placer mysqli_fetch_array (commentquery de $) dans une variable et faire un inverse de tableau, mais ne semble pas être le moyen de le faire.

+0

pouvez-vous vider la matrice pour l'échantillon – Krish

+1

Vous devriez publier ce que vous avez essayé exactement; obtenir toutes les lignes et faire un 'array_reverse()' résoudrait définitivement votre problème, tout comme l'éclatement des éléments à la fin du tableau dans une boucle. – jeroen

+0

Certes, vous pouvez récupérer toutes les entrées de résultats _all_ en mémoire, puis les parcourir de la manière que vous voulez, et pas seulement de haut en bas. Mais cette approche ne sera évidemment pas à l'échelle, puisque vous devez conserver tous les résultats en mémoire. Pour pouvoir traiter les entrées de résultats d'une manière qui s'adapte aux jeux de résultats plus volumineux, vous devez conserver le résultat dans le serveur sql et récupérer et traiter une seule entrée à la fois. Cela signifie que vous devez modifier la façon dont la requête sql définit l'ordre. – arkascha

Répondre

3

Effectuez une requête qui commande le résultat de la sélection d'enregistrements en cours.

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

Merci tout le monde pour vos réponses - mais c'était le plus simple et fonctionnait parfaitement. Le simple fait de sélectionner dans une sous-requête puis de commander la sous-requête produit les résultats dont j'ai besoin. Simple!!! Merci!! –

0

Bien que je ne vois pas pourquoi vous ne renversez pas simplement l'ordre de tri de votre requête, là où il y a une volonté il y a un moyen.

$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

Inverser l'ordre de tri de la requête et obtenir les 5 * derniers * éléments n'est pas aussi simple que cela puisse paraître :-) – jeroen

+0

Je viens de relire la question, et vous avez raison :) – rickdenhaan