Ciao,
nel seguente codice php che utilizza PDO:
il server effettua regolarmente il ciclo esterno, ma mai quello annidato.codice:<?php try { $db = new PDO("mysql:host=localhost;dbname=database","root","password"); } catch(PDOException $e) { echo $e->getMessage(); } $query1 = "SELECT * FROM table1"; foreach ($db->query($query1) as $row1) { $query2 = "SELECT * FROM table2 WHERE id2 = ".$row1['id1']; foreach ($db->query($query2) as $row2) { echo $row2['field']; echo " "; } } ?>
Dopo svariate prove mi sembra di aver capito che nel ciclo annidato perde il riferimento a quale database usare per la query. Il problema non si verifica invece se i risultati della prima query vengono salvati in un array temporaneo:
La cosa strana è che sui nostri server di sviluppo funziona correttamente anche la prima versione. Sono note forme di incompatibilità tra le varie versioni di MySLQ, PDO e PHP? Se qualcuno ha qualche idea in proposito... Grazie.codice:<?php try { $db = new PDO("mysql:host=localhost;dbname=database","root","password"); } catch(PDOException $e) { echo $e->getMessage(); } $query1 = "SELECT * FROM table1"; $result = $db->query($query1); $data = $result->fetchAll(); for ($i=0;$i<count($data);$i++) { $query2 = "SELECT * FROM table2 WHERE id2 = ".$data[$i]['id1']; foreach ($db->query($query2) as $row2) { echo $row2['field']; echo " "; } } ?>

Rispondi quotando