sql >> Databáze >  >> RDS >> Mysql

Smyčka přes MySQL levé spojení v php vs. 2 samostatné dotazy

Jeden dotaz je fajn. Jak to máte vy, a pravděpodobně lepší varianta. Musíte přijít na to, co je efektivnější, zda nechat zátěž MySQL, nebo síť a PHP. Je mnohem lepší nechat PHP, aby se ujal zátěže než MySQL, ale tam, kde má MySQL „vestavěné“ funkce, jako je seskupování, které si přejete, pak MySQL opusťte a ušetříte síťový provoz.

Aby to fungovalo:přidejte ke svému dotazu „ORDER BY p.post_id, pc.comment_id“ – tím se výsledky seřadí.

Pak, pokud musíte zabudovat do pole (ačkoli můžete být schopni zpracovávat přímo bez použití pole, metoda by byla podobná):

$lastPostID = 0;
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    if ($lastPostID <> $row['post_id']) {
        $lastPostID  = $row['post_id'];
        $answers[$lastPostID] = array('post_id' => $row['post_id'],
                                      'author_id' => $row['author_id'],
                                      etc
                                      'comments' => array() );
    }
    $answers[$lastPostID]['comments'][] = array('comment_id' => $row['comment_id'], 'coment' => $row['comment'] etc);
}


  1. Funkce Javascript post a volání php skriptu

  2. ALTER TABLE v MySQL:Přítel nebo nepřítel?

  3. Příkaz MySQL Insert vs syntaxe dotazu T-SQL s příklady

  4. Chyba při vytváření procedury mysql CRUD