Ciao,
nel seguente codice php che utilizza PDO:
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 "
";
}
}
?>
il server effettua regolarmente il ciclo esterno, ma mai quello annidato.
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:
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 "
";
}
}
?>
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.