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

roymatthieu 112 Messages postés jeudi 31 août 2006Date d'inscription 3 février 2011 Dernière intervention - 26 févr. 2010 à 21:47 - Dernière réponse : syndrael 2382 Messages postés lundi 4 février 2002Date d'inscription 29 décembre 2012 Dernière intervention
- 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
Afficher la suite 

4 réponses

Répondre au sujet
roymatthieu 112 Messages postés jeudi 31 août 2006Date d'inscription 3 février 2011 Dernière intervention - 27 févr. 2010 à 23:01
+3
Utile
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+
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de roymatthieu
syndrael 2382 Messages postés lundi 4 février 2002Date d'inscription 29 décembre 2012 Dernière intervention - 27 févr. 2010 à 10:54
0
Utile
Il faut boucler pour avoir toutes les lignes.
Regarde les tutoriaux sur PDO tu comprendras.
S.
Commenter la réponse de syndrael
roymatthieu 112 Messages postés jeudi 31 août 2006Date d'inscription 3 février 2011 Dernière intervention - 27 févr. 2010 à 22:39
0
Utile
Merci pour ta réponse...

Je n'ai pas de problème pour boucler sur un tableau...

Le code précédent me retourne Array, ce qui est normal mais ce qui l'es moins c'est le contenu du tableau :

J'ai ceci :

Array
(
[Tables_in_xxx] => sys_xx1
)

et je devais avoir plusieurs valeurs, un truc dans le style (la base contient environ 15 tables).

Array
(
[Tables_in_xxx] => sys_xx1
[Tables_in_xxx] => sys_xx2
[Tables_in_xxx] => sys_xx3
...
)
Commenter la réponse de roymatthieu
syndrael 2382 Messages postés lundi 4 février 2002Date d'inscription 29 décembre 2012 Dernière intervention - 28 févr. 2010 à 10:35
0
Utile
Je devais être fatigué pour pas te donner cette réponse..
Mais j'avoue que j'utilise MySQLi en direct plutot que PDO.
Mais ils se positionnent différemment.
S.
Commenter la réponse de syndrael

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.