PDO ve iç içe getiriliyor

2 Cevap php

Diyelim ki böyle bir şey var diyelim:

$db=new PDO($dsn);

$statement=$db->query('Select * from foo');

while ($result=$statement->fetch())
{
    //do something with $result
}

Bunu nasıl ise döngü içinde başka bir sorgu koymak istiyorsunuz? Ben yeni bir PDOStatement nesnesi yapmak bile, o üstteki PDO deyimi için imleci üzerine yazar gibi görünüyor. Gördüğüm diğer tek çözüm) bir kerede tüm dış döngü veya veritabanına b) açık 2 farklı bağlantıları almak için belirtilebilir. Bunların hiçbiri başka çözümler vardır, iyi bir fikir gibi görünüyor?

2 Cevap

Eğer döngü içindeyken istediğiniz diğer sorgu yapmak mümkün olmalıdır, diyorum ki; böyle bir şey:

$db=new PDO($dsn);

$statement=$db->query('Select * from foo');

while ($result=$statement->fetch())
{
    $statement2 = $db->query('Select * from bar');
    while ($result2=$statement2->fetch()) {
        // use result2
    }
}

Bunu denedin mi? Bu çalışması gerekir ...


Still, if you can (if it's OK with your data, I mean), using a JOIN to do only one query might be better for performances : 1 query instead of several is generally faster.

Ne başarmak için çalışıyoruz bakıyoruz kayıtlarında, neden sadece ilk sorgu onları birleştirmek için değil ilgili verileri oluyor gibi geliyor? Veritabanı kodunun herhangi bir miktarı dıştan yapabilirsiniz daha içten noktaları birleştirmek daha iyi olacaktır.

Ama soruyu cevaplamak için, ben aynı DSN başka bir bağlantı açılıyor zarar görmüyorum, gerçekleşmesi en muhtemel şey aynı gerçek bağlantısına işaret PDO nesnesinin başka bir örneğini almak olduğunu. Ayrıca, ancak veri miktarına bağlı olarak size sadece fetchAll ve bir php dizi üzerinde döngü olabilir bekliyoruz.