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.