Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie kann man Ergebnisse mehrfach abfragen, um die Anzahl der Abfragen zu reduzieren?

PDO ist ein bisschen mehr als alle denken. Zum Beispiel hat es ein großartiges Feature namens PDO::FETCH_GROUP .

Ganz zu schweigen von anderen kleinen Verbesserungen, die Ihren Code erheblich kürzer machen können.

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

Ist der gesamte Code, den Sie benötigen.

hier wählen Sie den confirmed aus Feld zuerst und weisen Sie dann PDO an, die Ergebnisse basierend auf ihrem Wert zu gruppieren (oder zu "multiplizieren").

Und jetzt können Sie Ihre Kommentare drucken, wo immer Sie wollen

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

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

Oder, um es in einer Schleife zu machen

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