Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration MySQL Discussion :

show tables dans base de données


Sujet :

Administration MySQL

  1. #1
    Membre habitué
    show tables dans base de données
    Bonjour,

    J'ai beau cherché, je ne parviens pas à trouver clairement comment afficher toutes les tables d'une base de donnée.
    J'ai vu la commande mysql_list_tables mais elle est obsolète semble-t-il et j'ai entendu parlé de SHOW TABLES mais je ne comprends pas vraiment comment l'utiliser.
    Je suis débutant en php et sql.

    J'aimerais fonctionner ainsi, mais ça ne marche pas :

    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            $conn = new mysqli('monsite', 'admin','motdepasse') ;
     
            $showTables = 'SHOW TABLES FROM maBaseDeDonnee' ;
     
            while ( $table = $conn -> fetch($showTables) ){
                echo ($table.'<br>');
            }


    Merci si vous pouvez m'aider.

  2. #2
    Expert éminent sénior
    bonjour,

    regardez cette discussion
    https://www.developpez.net/forums/d1...e-tableau-php/

  3. #3
    Rédacteur

    SHOW TABLE est une commande spécifique à MySQmerde et n'a rien à voir avec le langage SQL.

    SI vous voulez la liste des tables, il faut faire une requête SQL dans INFORMATION_SCHEMA, comme ceci :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    SELECT *
    FROM   INFORMATION_SCHEMA.TABLES


    A +

    Pour apprendre la langage SQL, lisez mon livre :
    Cette signature n'a pas pu être affichée car elle comporte des erreurs.

  4. #4
    Membre habitué
    Ok, merci pour vos réponse.

    Mais je suis vraiment débutant, donc j'ai du mal a comprendre comment utiliser cette commande :
    Là effectivement, si j'utilise ceci :

    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            $link = new PDO('mysql:host=www.monsite.com;dbname=madDb','admin','motDePasse');
            $showTables = $link->query('SELECT * FROM INFORMATION_SCHEMA.TABLES ') ;
            while ( $table = $showTables->fetch() ){
                echo json_encode($table) ;
            }


    Je vois bien que j'ai accès aux tables mais avec des données totalement indigestes.

    Or j'ai juste besoin d'avoir les noms des tables.

  5. #5
    Rédacteur

    Il faut apprendre le langage SQL !

    Dans la requête vous pouvez préciser à la place de l'étoile (pas celle à paris du Gal. De Gaulle !!!) les colonnes que vous souhaitez. Les colonnes pour le nom des tables sont : TABLE_SCHEMA et TABLE_NAME. Une table est toujours situé dans un SCHEMA SQL, mais MySQmerde fait confusion de la notion de schéma SQL et de base de données....
    Donc, votre requête devrait être :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES


    A +
    Cette signature n'a pas pu être affichée car elle comporte des erreurs.

  6. #6
    Membre habitué
    SQLpro Oui j'essaye .

    Alors j'ai testé ce code mais résultat il me sort encore plus de données apparemment il s'agit de toutes les bases de données, toutes les tables du server.

    Or j'ai besoin d'avoir juste un array du nom de chaque table d'une seule bdd :

    ex :

    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
            $showTables = $link->query('SELECT TABLE_NAME FROM maBaseDeDonne ') ;
            while ( $table = $showTables->fetch() ){
                echo json_encode($table) ;
            }

    (évidement ça ne marche pas).

  7. #7
    Modérateur

    alors il faut restreindre sur la nom de schéma :


  8. #8
    Membre habitué
    aieeeuuuuu, c'est à dire ?
    Je mets quoi à la place de "xxx" ?
    Car le nom de la table je l'ai déjà mis en "FROM"

  9. #9
    Membre expérimenté
    Bonsoir,

    Je rejoint SQLpro pour dire qu'il faille apprendre un langage avant de se lancer ; au moins un peu

    Le bouquin mis en publicité est très bien mais ... introuvable. épuisé de partout.
    Si vous le trouvez dans une brocante n'hésitez pas.

    Quand vous écrivez :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    SELECT TABLE_NAME FROM maBaseDeDonne

    Que représente pour vous "maBaseDeDonne" ?
    Le savoir est une nourriture qui exige des efforts.

  10. #10
    Expert éminent sénior
    il est essentiel de maîtriser le langage SQL natif et de valider les requêtes à exécuter, avant de se lancer dans la construction dynamique de ces requêtes au travers d'un langage PHP ou autre.