Fonction sql pour trouver le nom d'une table

Résolu/Fermé
tuqqujaujuq Messages postés 2 Date d'inscription mercredi 9 janvier 2008 Statut Membre Dernière intervention 9 janvier 2008 - 9 janv. 2008 à 14:56
tuqqujaujuq Messages postés 2 Date d'inscription mercredi 9 janvier 2008 Statut Membre Dernière intervention 9 janvier 2008 - 9 janv. 2008 à 21:16
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

6 réponses

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
phil232 Messages postés 607 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 31 janvier 2008 178
9 janv. 2008 à 14:57
tu dois simplement faire autant de requetes qu'il y a des tables à fouiller
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
9 janv. 2008 à 15:20
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
phil232 Messages postés 607 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 31 janvier 2008 178
9 janv. 2008 à 16:09
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
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
9 janv. 2008 à 16:31
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
phil232 Messages postés 607 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 31 janvier 2008 178 > kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013
9 janv. 2008 à 16:49
malheureusement 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
le père > phil232 Messages postés 607 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 31 janvier 2008
9 janv. 2008 à 16:58
malheureusement 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
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857 > le père
9 janv. 2008 à 17:13
Je 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
phil232 Messages postés 607 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 31 janvier 2008 178 > kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013
9 janv. 2008 à 18:22
je 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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Si tu ne connais pas a priori la liste des tables, pour l'avoir :

SHOW TABLES IN nomtable
0
SHOW TABLES IN nombase, pardon
0
tuqqujaujuq Messages postés 2 Date d'inscription mercredi 9 janvier 2008 Statut Membre Dernière intervention 9 janvier 2008
9 janv. 2008 à 21:16
c'est sympa d'aider les petits amateurs!
0