2009-12-28 6 views
1

Je suis en train d'obtenir les 7 derniers enregistrements d'une table dont les enregistrements ont été saisies par l'utilisateurObtenir les 7 dernières lignes de MySQL en PHP

Voici ma question:

$database->setQuery("SELECT * FROM #__mytable WHERE (user_id = '$uid')"); 
$dberr=""; 
if (!$database->query()) { 
    $dberr = $database->getErrorMsg(); 
} 

if(!$dberr==""){ 
    echo($dberr."<br>"); 
}else{ 
    $rows = $database->loadObjectList(); 

Comment faire Je passe par les $ rows pour obtenir les 7 derniers?

+0

j'ai accepté l'une des réponses, mais je ne veux la réponse inclus le code PHP. – ChuckO

+0

Vous n'avez pas besoin de modifier votre code PHP pour obtenir l'effet décrit. Remplacez simplement votre requête SQL dans votre paramètre setQuery. – erenon

Répondre

3
SELECT * 
FROM #__mytable 
WHERE user_id = '$uid' 
ORDER BY 
     entered_date DESC 
LIMIT 7 

les obtenir dans l'ordre croissant, utilisez:

SELECT * 
FROM (
     SELECT * 
     FROM #__mytable 
     WHERE user_id = '$uid' 
     ORDER BY 
       entered_date DESC 
     LIMIT 7 
     ) q 
ORDER BY 
     entered_date 
2
SELECT * FROM #__mytable WHERE (user_id = '$uid') ORDER BY id DESC LIMIT 0,7 
5

ne pas:

SELECT * FROM ... WHERE ... ORDER BY user_id DESC LIMIT 7 
+1

Pourquoi commandez-vous le resoult par user_id? – erenon

+0

J'ai supposé que les ID utilisateur sont incrémentiels et uniques, et que par conséquent, ils serviraient bien d'ordre de regroupement par défaut de toute la table. Vous devez trier par une clé, sinon les résultats sont imprévisibles et varieront largement entre les plateformes/moteurs de bases de données/versions de bibliothèques/phase de la lune. – mst

+0

'@ mst':' user_id' est filtré dans la requête d'origine. – Quassnoi

Questions connexes