Récupération des TOUTES les tables d'une base de données avec PDO

Résolu
roymatthieu Messages postés 112 Date d'inscription jeudi 31 août 2006 Statut Membre Dernière intervention 3 février 2011 - 26 févr. 2010 à 21:47
syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 - 28 févr. 2010 à 10:35
Bonjour à tous,

Je suis entrain de créer un classe de gestion de backup de site.

Le principe est la sauvegarde des fichiers et des réperoires du serveur et des tables de la base de données et archivage du tout dans un zip.

J'optimise un ancien script qui fonctionnait avec des requêtes mysql_query (script qui fonctionne à la perfection).

J'aimerai effectuer la récupération des tables de la bases en PDO car j'ai adopté PDO depuis un moment déjà.

Je pense avoir compris que dans ce cas précis la requête SHOW TABLE ne fonctionne qu'avec une base de type MYSQL.

J'exécute le code suivant :


$pdo    = PDO2::getInstance();

$query  = 'SHOW TABLES';

$query = $pdo -> query($query);

$result = $query -> fetch(PDO::FETCH_ASSOC);

return $result;



et cela ne me revoye que la première des tables de ma base et non les autres ???

J'ai beau chercher, je ne trouve pas...

Quelqu'un aurait-t'il la solution ???

Merci d'avance
A voir également:

4 réponses

roymatthieu Messages postés 112 Date d'inscription jeudi 31 août 2006 Statut Membre Dernière intervention 3 février 2011 1
27 févr. 2010 à 23:01
J'ai trouvé !

c'est tout con...

c'est $query -> fetchAll(); au lieu de $query -> fetch();

et ça renvoye le tableau correct.

Donc au complet avec affichage des valeurs.

$pdo    = PDO2::getInstance();

$query  = 'SHOW TABLES';

$query  = $pdo -> query($query);

$result = $query -> fetchAll(PDO::FETCH_ASSOC);

while(list ($key, $array) = each($result)){

foreach($array as $table){

echo $table.'
';
}
}



dans ce cas fetchAll renvoie un tableau à deux dimension tandis que fetch ne renvoie qu'une seule dimension.

Merci Syndrael, sans le savoir tu m'as mis sur la voie, merci encore d'avoir pris le temps de répondre.

A+
3
Rejoignez-nous