Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment multiplier les résultats de requêtes afin de réduire le nombre de requêtes ?

AOP est un peu plus que tout le monde ne le pense. Par exemple, il a une fonctionnalité magnifique pour vous, appelée PDO::FETCH_GROUP .

Sans parler d'autres petites améliorations qui peuvent rendre votre code considérablement plus court.

$r = $handler->query("SELECT confirmed, c.* FROM comments c")->fetchAll(PDO::FETCH_GROUP);

C'est tout le code dont vous avez besoin.

ici vous sélectionnez le confirmed champ d'abord, puis dites à PDO de regrouper (ou "multiplier") les résultats en fonction de sa valeur.

Et maintenant, vous pouvez imprimer vos commentaires où vous voulez

// Awaiting Comments
foreach($r[0] as $r_) {
    echo "<li>$r_[title]</li>";
}

// Confirmed comments
foreach($r[2] as $r_) {
    echo "<li>$r_[title]</li>";
}

Ou, pour le faire en une seule boucle

$titles = [
    0 => 'Awaiting Comments',
    2 => 'Comments waiting confirmation',
    1 => 'Confirmed Comments',
];

foreach ($titles as $code => $title)
{
    echo "<h3>$title</h3>";
    foreach($r[$code] as $r_) {
        echo "<li>$r_[title]</li>";
    }
}