Ca faisait longtemps que je n’avais pas posté un petit article vite fait sur une question qu’il m’arrive souvent de me poser alors que j’avais déjà la réponse mais que je ne savais pas où je l’avais mise
La question du jour :
Pourquoi?
Quand on fait une recherche sur Google on tombe généralement sur des réponses de ce genre :
Ben tu n’as qu’a faire un :
SHOW COLUMNS FROM table
en PHP et compter les lignes du tableau généré avec la fonction mysql_num_fields.
Exemple :
$req = mysql_query("SHOW COLUMNS FROM table");
echo mysql_num_fields($req);
Effectivement, ça fonctionne mais bon, pour ceux qui n’ont pas envie d’aller coder un script php juste pour ça c’est pas non plus ce qu’il y a de plus rapide (eh oui, cette éternelle flemme ^^).
Heureusement qu’on a inventé la base « INFORMATION_SCHEMA » et sa table « COLUMNS » !
La base de données « INFORMATION_SCHEMA » est présente normalement dès que l’on un accès suffisant sur une BDD. Cette base contient les infos sur les autres bases de données auquel on a accès. Donc pour compter les colonnes d’une table juste en faisant une requête SQL il vous suffit de taper ceci :
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'table'
Simple, il suffit de rajouter le nom de la base de données a trouver dans la colonne TABLE_SCHEMA
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'table' AND TABLE_SCHEMA = 'base_1'
Personnellement, je trouve ça plus propre de le faire en SQL mais au moins avec ce billet, vous avez les deux méthodes.