2008-10-13 11 views
3

Dans asp.net, vous pouvez récupérer plusieurs données depuis un seul appel vers la base de données. Pouvez-vous faire la même chose en PHP?Plusieurs tables de données en PHP/MySQL?

Exemple:

$sql ="select * from t1; select * from t2;"; 
$result = SomeQueryFunc($sql); 
print_r($result[0]); // dump results for t1 
print_r($result[1]); // dump results for t2 

Pouvez-vous faire quelque chose comme ça?

Répondre

3

Ceci est appelé "multi-requête". L'extension mysql en PHP n'a aucun moyen d'activer la multi-requête. L'extension mysqli vous permet d'utiliser plusieurs requêtes, mais uniquement via la méthode multi_query(). Voir http://php.net/manual/en/mysqli.multi-query.php

L'utilisation de plusieurs requêtes n'est pas recommandée, car elle peut augmenter les dommages potentiels causés par les attaques par injection SQL. Si vous utilisez plusieurs requêtes, vous devez utiliser des habitudes d'inspection de code rigoureuses pour éviter la vulnérabilité d'injection SQL.

0

Cela devrait être possible avec MySQL plus récent et l'extension PHP (améliorée) mysqli. Je ne suis pas sûr si des couches d'abstraction DB le supportent.

Voir les informations pertinentes MySQL docs et PHP docs.

0

Si vous utilisez MySQL classique, vous ne pouvez pas. Vous pouvez créer une fonction qui ressemblera

function SomeQueryFunc($queries) { 
    $queries = explode(';', $queries); 
    $return = array(); 
    foreach($queries as $index => $query) { 
     $result = mysql_query($query); 
     $return[$index] = array(); 
     while($row = mysql_fetch_assoc($result)) { 
      foreach($row as $column => $value) { 
       $return[$index][$column] = $value; 
      } 
     } 
    } 
    return $return; 
} 

qui fonctionnera comme prévu

Questions connexes