Mysql
 sql >> Database >  >> RDS >> Mysql

Come ottenere più risultati di query per ridurre il numero di query?

La DOP è un po' più di quanto tutti pensino. Ad esempio, ha una magnifica funzionalità per te, chiamata PDO::FETCH_GROUP .

Per non parlare di altri piccoli miglioramenti che possono ridurre notevolmente il codice.

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

È tutto il codice di cui hai bisogno.

qui stai selezionando il confirmed prima il campo e poi indica a PDO di raggruppare (o "moltiplicare") i risultati in base al suo valore.

E ora puoi stampare i tuoi commenti dove vuoi

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

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

Oppure, per farlo in un unico ciclo

$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>";
    }
}