IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Langage PHP Discussion :

Récupérer le nom de la table en cours


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    avril 2007
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2007
    Messages : 685
    Points : 141
    Points
    141
    Par défaut Récupérer le nom de la table en cours
    Bonjour

    Je sais lister le noms des tables mais comment récupérer le nom de la table connectée.

    J'espérai pouvoir m'en sortir tout seul et bien cherché avant de poster, mais je n'ai pas trouvé de solution.

    Ce bout de code ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $results = $bdd->query('SELECT * FROM personnes LIMIT 0');
    for ($i = 0; $i < $results->columnCount(); $i++) {
    $col = $results->getColumnMeta($i);
    $columns[] = $col['name'];
    echo $col.$columns;
    }
    Pourquoi ça bug à la ligne 5.

    Existe-t-il une autre solution ?? Quelque chose dans les cours PHP ?

    Merci d'avance pour votre aide.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 29 208
    Points : 43 406
    Points
    43 406
    Par défaut
    Pense à donner les messages d'erreur quand tu poses une question.

    Qu'est ce que c'est "la table connectée" ?
    Qu'est ce que tu cherches à avoir ?

    Concernant ta ligne 5, echo fonctionne avec des chaines, pas avec des tableaux.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    avril 2007
    Messages
    8 632
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : avril 2007
    Messages : 8 632
    Points : 16 367
    Points
    16 367
    Par défaut
    Concernant la ligne 5, si tu essayes d'afficher les données du tableau concaténées, utilise implode (à l'extérieur de la boucle)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $results = $bdd->query('SELECT * FROM personnes LIMIT 0');
    for ($i = 0; $i < $results->columnCount(); $i++) {
        $col = $results->getColumnMeta($i);
        $columns[] = $col['name'];
    }
    echo implode(', ', $columns);
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    avril 2007
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2007
    Messages : 685
    Points : 141
    Points
    141
    Par défaut
    Merci à vous pour votre réactivité.

    Voici le message d'erreur :
    Array to string conversion in C:\wamp64\www\1_Aide\nom table en cours.php on line …
    Je cherche à récupérer le nom de la la table en l’occurrence "personnes" dans mon code.

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    avril 2007
    Messages
    8 632
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : avril 2007
    Messages : 8 632
    Points : 16 367
    Points
    16 367
    Par défaut
    Le code que tu nous montres récupère les noms des colonnes.

    Le nom de la table ? Tu as forcément déjà l'information : autant on peut faire une requête sans connaître les colonnes en utilisant SELECT *, autant je ne vois pas comment tu peux écrire une requête sans connaître le nom de la table
    Et si ta requête contient plusieurs tables, une jointure ? qu'est-ce que tu espères obtenir ?

    EDIT : Autant pour moi : il semble que getColumnMeta retourne le nom de la table en plus du nom de la colonne :
    table Le nom de la table de cette colonne, tel que retourné par la base de données.
    Donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $results = $bdd->query('SELECT * FROM personnes LIMIT 0');
    for ($i = 0; $i < $results->columnCount(); $i++) {
        $col = $results->getColumnMeta($i);
        $columns[] = $col['table'].'.'.$col['name'];
    }
    echo implode(', ', $columns);
    A noter, l'avertissement sur la fonction :
    Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et, concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS ! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.
    Tous les drivers PDO ne supportent pas la fonction PDOStatement::getColumnMeta().
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    avril 2007
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2007
    Messages : 685
    Points : 141
    Points
    141
    Par défaut
    Merci Celira pour l'info

    J'ai corriger mon code et effectivement getColumnMeta retourne le nom de la table en plus du nom de la colonne.

    Le but ce n'est pas d'écrire une requête sans connaître le nom de la table, mais de récupérer le nom de la table de la requête.

  7. #7
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : janvier 2006
    Messages : 1 769
    Points : 2 404
    Points
    2 404
    Par défaut
    tant que le SQL est simple, tu fais une expression réguliere sur le texte de la requete.
    la derniere fois que j'avais besoin de connaitre le nom de la table en plus de la requete, j'ai fait une structures d'objets qui décrivait la table.
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

Discussions similaires

  1. Récupérer le nom de la table en cours d'exécution
    Par enicnath dans le forum SAS Base
    Réponses: 2
    Dernier message: 21/02/2014, 12h36
  2. Récupérer le nom d'une table dans une fonction
    Par Milo59000 dans le forum SQL
    Réponses: 5
    Dernier message: 13/02/2008, 15h40
  3. Récupérer le nom d'une table
    Par romulus67 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 07/01/2008, 13h59
  4. Réponses: 2
    Dernier message: 24/08/2006, 10h46
  5. Récupérer le nom de ma table
    Par obione dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/12/2004, 16h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo