Fonction sql pour trouver le nom d'une table

Résolu
Bonjour,

existe-t-il un e fonction php/mysql permettant de trouver à quelle table appartient une donnée?
pex ds quelle table se trouve le nom "jacques"?

merci pour l'amateur que je suis

tuqqujaujuq
Configuration: Windows Vista
Internet Explorer 7.0

6 réponses

  1. ca me semblait un peu lourd pour son utilisation.
    ça n'est quand même pas si compliqué que ça ...

    <?php
    
    $dbServer="localhost"; 
    $dbName="essai"; 
    $User="xxxxxx"; 
    $Pwd="xxxxxx"; 
    $cnx = mysql_connect($dbServer, $User, $Pwd ); 
    $db = mysql_select_db($dbName); 
    $valeurcherchee= "jacques";
    
      $rep = mysql_db_query($dbName,'show tables in essai') or die (mysql_error()); 
      $tbl=array();
      while ($lgn=mysql_fetch_array($rep)) $tbl[]=$lgn[0];
      mysql_free_result($rep);  
    
      foreach ($tbl as $table) {
        $rep= mysql_db_query($dbName,'SHOW COLUMNS FROM `'.$table.'` FROM '.$dbName) or die (mysql_error());
        $tbcolonnes=array();
        while ($lgn=mysql_fetch_array($rep)) $tbcolonnes[]=$lgn[0];
    
        foreach ($tbcolonnes as $colonne) {
          $rep= mysql_db_query($dbName,'SELECT * FROM `'.$table.'` WHERE CONCAT(`'.$colonne.
                '`) =\''.mysql_real_escape_string($valeurcherchee).'\'') or die (mysql_error());
          echo " trouvé ",mysql_num_rows($rep), " fois dans la colonne ", htmlspecialchars($colonne), 
               ' de la table ', htmlspecialchars($table),'<BR>';
           mysql_free_result($rep); 
        } // foreach ($tblcolonnes
      } // foreach ($tbl
    ?> 
    3
    1. tu dois simplement faire autant de requetes qu'il y a des tables à fouiller
      0
      1. Contributeur
        Encore faut-il connaitre la structure de la base et des tables, afin de pouvoir faire des requête qui tiennent la route.
        Si tu connais tout ca tu devrait donc savoir dans quelles tables cette information peut etre présente.
        0
        1. depuis quand la structure d'une table a de quoi avoir avec ce quelle contient. tu cherches une donnée et pas un élément de la structure de la table
          0
          1. Contributeur
            Je veux dire par là que si tu souhaite trouver une informations dans une base de données, il faut bien connaitre la structures de ses tables pour effectuer une requete sql non ?
            Dans le cas contraire je veux bien un exemple car je ne connais pas.
            0
          2. @kij_82malheureusement c'est php/mysql, mais normalement (sous windows) tu utilisera probablement ADO pour te connecter à la base. ADO te fournit le catalogue (la liste de table), la structure d'une table et plus
            je suis certain que même sans ADO il y a qq chose de similaire dans php/mysql. au moins la API pour ODBC contient cette fonctionalité. le reste se trouvera sur google.
            0
          3. @phil232malheureusement c'est php/mysql, mais normalement (sous windows) tu utilisera probablement ADO pour te connecter à la base ???
            Je n'ai jamais utilisé ADO pour me connecter à ma base mysql sous windows. Ou alors comme M.Jourdain...

            la requête show tables in base marche très bien en PHP/mysql
            0
          4. Contributeur
            @le pèreJe suis d'accord que tu peux avoir la structure de ta base avec show tables, mais il ne faut pas oublier qu'on est dans le contexte d'un script PHP, donc il faudrait alors développer un moteur d'interprétation du résultat de show table pour construire dynamiquement ses requetes en fonction des noms de table, champs, etc... c'est tout à fait réalisable mais ca me semblait un peu lourd pour son utilisation.

            N'y a-t-il rien d'autre qui existe ?
            0
          5. @kij_82je ne sais pas pour mysql mais dans chaque base sérieuse tu peux continuer avec qq chose comme ça

            SHOW FIELDS IN nomtable

            puis en boucle

            for each table in <resultat de SHOW TABLES IN nombase>
            for each field in <resultat de SHOW FIELDS IN nomtable>
            do stuff
            FieldList = FieldList & field.name & ", "
            next
            next
            0
        2. Si tu ne connais pas a priori la liste des tables, pour l'avoir :

          SHOW TABLES IN nomtable
          0
          1. SHOW TABLES IN nombase, pardon
            0
        3. c'est sympa d'aider les petits amateurs!
          0