6
votes

Équivalent de mysql_list_tables dans PHP PDO?

Lorsque vous utilisez PHP PDO pour accéder à la base de données, il existe un moyen de répertorier toutes les tables d'une base de données?

quelque chose comme mysql_list_tables () est ce qui est nécessaire.


0 commentaires

4 Réponses :


19
votes

Qu'en est-il d'utiliser une requête SQL qui fait quelque chose comme ceci: xxx

ou, si nécessaire, spécifiant la base de données: xxx

Et, si vous voulez seulement obtenir des tables: xxx


En fait, même si le mysql_list_tables () fonction existe, sa page manuelle indique:

Cette fonction est obsolète. Il est préférable d'utiliser mysql_query () à Émettre un SQL Show Tables [de db_name] [comme "modèle"]] déclaration à la place.

Donc, cela devrait être tout à fait ok avec PDO, je suppose.



Et, tester avec PDO: xxx

Je reçois ce genre de sortie: xxx

qui convient aux tables En fait, j'ai dans cette base de données.


6 commentaires

Oui. Cela fonctionnera aussi longtemps que la syntaxe de requêtes "Show Tables" est valide pour tous les pilotes de base de données prise en charge de PDO. Est-ce le cas?


Par exemple, Postgres utilise "\ DT" pour répertorier des tables et non "Afficher les tables". Donc, si notre objectif est la compatibilité croisée croisée (à l'aide de PDO), cette façon ne fonctionnera pas.


@Saintsjd: probablement pas, malheureusement :-( ;; traverser les sources de la doctrine Orm Cadre, la requête utilisée pour répertorier les tables d'un DB est un peu plus compliquée pour MSSQL, plus compliqué à nouveau pour SQLite, et encore plus compliqué Pour pgsql :-(


Si votre objectif réel est votre objectif réel, vous ferez probablement mieux d'utiliser quelque chose comme Doctrine (qui implémente beaucoup de choses liées à la compatibilité de la DB), pourrais-je ajouter: PDO est agréable, mais cela ne résumait que certaines différences (comme non avoir à utiliser mysqli_ * ou pg_ * ou ...) ;; Il ne résumait pas les différences entre les syntaxes SQL que chaque moteur DB comprend.


C'est pourquoi le docu à uk.php.net/manual/fr/intro.pdo .php dit: "PDO ne fournit pas d'abstraction de base de données"


"\ dt" n'est pas une requête PostgreSQL, mais une commande dans l'outil de commande de commande PSQL ... Cependant, il existe une table PG_TABLES qui peut être intéressée par vous. Pour SQLite, il y a une table sqlite_master.



1
votes

Si vous voulez le faire sous une manière multiple, consultez Zend Framework 'S href = "http://framework.zend.com/manual/fr/zend.db.html" rel = "nOfollow NOREFERRER"> zend_db , qui fournit le ListeTables ()


0 commentaires


2
votes
$alltables=$db->query("SHOW TABLES",PDO::FETCH_NUM);

while($result=$alltables->fetch()){

echo $result[0].'<br/>';
}
This is the exact code you want, I guess.

0 commentaires