francoisch Posté 4 Janvier 2011 Partager Posté 4 Janvier 2011 (modifié) Bonjour Sur un site Web, jai un nombre important de tables MySql qui constituent 5 groupes ; toutes les tables dun même groupe ont la même structure, en principe, mais un contenu différent. Comme ces tables ont été créées au fil du temps et quune colonne ou une autre a été ajoutée à la structure, toujours au fil du temps, il arrive quune table manque dune colonne. Plutôt que de vérifier chaque table une par une, je cherche un moyen simple de vérifier que ces tables ont bien toutes leurs colonnes. Pour le moment, je fais ça pour chaque groupe de tables: Pour lire la première ligne:${"requete".$numeroBase} = "SELECT * FROM ".$table." limit 1";Pour tester le cas où la dernière colonne de la ligne n'existe pas:if (!isset($myrow[$nbColonne])) { echo "<br>La dernière colonne n'existe pas .... Quand une table existe, elle a souvent au moins une ligne mais elle peut aussi être vide; la dernière colonne de la première ligne, quand elle existe, peut ne pas être renseignée. A votre avis, est-ce la bonne solution ? Par avance merci de votre aide. Francois Modifié 4 Janvier 2011 par francoisch Lien vers le commentaire Partager sur d’autres sites More sharing options...
Ernestine Posté 5 Janvier 2011 Partager Posté 5 Janvier 2011 Salut, Sur tout serveur mysql (supérieur à 5.0.2) tu as une base de données information_schema, qui liste toutes les bases, les tables, les colonnes, etc... c'est l'idéal pour vérifier la structure d'une table. Même si tu n'es pas connecté en tant qu'administrateur tu y as accès en lecture. Exemple : SELECT COLUMN_NAME, ORDINAL_POSITIONFROM INFORMATION_SCHEMA.COLUMNSWHERE TABLE_NAME = 'ma_table' te retourne la liste des colonnes de la table ma_table. Je pense que ça pourrait t'aider Voir la doc : http://dev.mysql.com/doc/refman/5.0/fr/information-schema.html Lien vers le commentaire Partager sur d’autres sites More sharing options...
francoisch Posté 5 Janvier 2011 Auteur Partager Posté 5 Janvier 2011 (modifié) bonjour Ernestine et merci encore de ton aide. Cette commande, que je ne connaissais pas, liste effectivement les noms et ordre des colonnes d'une table. Ce que j'avais trouvé jusqu'ici ne fonctionnait pas avec une table vide, et j'en ai plusieurs. Il faut maintenant que je vois comment automatiser ça pour n'afficher que ce qui serait différent du schéma normal de chaque table. Merci encore de ton aide. Francois --------------------------------------------------------- Finalement, j'ai fait ça: - comparer la structure standard avec la structure lue ici, avec array_diff() - compter les différences dans la table résultat avec count() Ca parait bien fonctionner. Merci encore. Francois Modifié 6 Janvier 2011 par francoisch Lien vers le commentaire Partager sur d’autres sites More sharing options...
francoisch Posté 6 Janvier 2011 Auteur Partager Posté 6 Janvier 2011 Une difficulté, j'ai: Warning: mysql_query() [function.mysql-query]: Unable to save result set sur: $result = mysql_query($requete,$connexion); assez souvent mais pas toujours. Ca m'étonne que la requête passe parfois mais se plante d'autres fois. A votre avis? Francois Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant