Bonjour,
Je souhaiterai connaitre la requête a effectuée pour vérifier l'existence d'un champ dans une table (base de donnée mysql)....
Merci d'avance de vos réponses ....
Version imprimable
Bonjour,
Je souhaiterai connaitre la requête a effectuée pour vérifier l'existence d'un champ dans une table (base de donnée mysql)....
Merci d'avance de vos réponses ....
Heu... A ma connaissance, tu ne peux pas...
Bonjour,
Essaye d'utiliser :
Tu récupères les différents nom des champs de ta table avec :Code:SHOW COLUMNS FROM nom_de_ta_table
Ensuite tu n'as plus qu'à regarder si le nom que tu cherches est présent.Code:$result['Field']
Bonjour
Si si, c'est possible ;)
Tu as deux solutions sous MySQL :
- la table COLUMNS de INFORMATION_SCHEMA ;
- la commande SHOW COLUMNS.
Par exemple, pour lister les colonnes de la table 'test' :
ou :Code:
1
2
3SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'test'
Voir la doc MySQL :Code:
1
2 SHOW COLUMNS FROM test
http://dev.mysql.com/doc/refman/5.0/...mns-table.html
http://dev.mysql.com/doc/refman/5.0/...w-columns.html
je ne connaissais pas cette table :oops:
Autant pour moi.
Que contient
toutes les colonnes de la BdD?Code:
1
2
3SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'test'
Ca contient toutes les colonnes de la table 'test' (pour avoir toutes les colonnes de la base de données, il suffit de retirer la clause where).
Pour plus de détails, n'hésites pas à aller faire un tour sur la doc de MySQL. J'ai mis les liens dans mon premier message. Le premier lien correspond à la documentation de la table INFORMATION_SCHEMA.COLUMNS (avec la liste des champs de cette table), et le deuxième à la syntaxe de la commande SHOW COLUMNS.
Erf, je n'avais pas vu ces liens.
Ok...
Donc avec une requête
On obtiendra 0 ou la colonne et nous saurons donc si le champs existe...Code:
1
2
3
4
5 SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'test' AND COLUMN_NAME LIKE "nomChampRecherche"
Merci pour vos réponses !!!!
Je donne un exemple concret (ça peux servir pour ceux qui liront par la suite) :
Encore merci de vos (rapides) réponses :yaisse2:Code:
1
2
3
4
5
6
7
8
9
10 $sql = "SELECT column_name FROM information_schema.columns WHERE table_name = 'nom_de_votre_table' AND column_name LIKE 'nom_du_champ'"; // Si il existe if ( mysql_num_rows( $result ) != 0 ) { echo "Le champ éxiste"; } else { echo "Le champ n'éxiste pas"; }
Oui, au détail près qu'il faut quand même envoyer la requête sql :
Par exemple, si l'on veut vérifier que les clés du tableau associatif $liste_param figurent comme entête de colonne dans la table $table, avec la fonction rse qui n'est autre que my_real_string_escape :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 foreach($liste_param as $param => $value ){ $sql = "SELECT column_name FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = '%s' AND column_name LIKE '%s'"; $retour = mysql_query(sprintf($sql, rse($table), rse($param))) or die($sql . " - " . mysql_error()); // Si il existe if ( mysql_num_rows( $retour ) != 0 ) { echo "<br/>Le champ $param existe"; } else { echo "<br/>Le champ $param n'existe pas"; } }