Je voudrais obtenir tous les noms de col d'une table mysql dans un tableau en php?
Y a-t-il une requête à ce sujet?
La meilleure façon est d'utiliser la base de données virtuelle de métadonnées INFORMATION_SCHEMA . Plus précisément, la table INFORMATION_SCHEMA.COLUMNS ...
SELECT `COLUMN_NAME`
FROM `INFORMATION_SCHEMA`.`COLUMNS`
WHERE `TABLE_SCHEMA`='yourdatabasename'
AND `TABLE_NAME`='yourtablename';
Il est TRÈS puissant et peut vous donner des TONNES d'informations sans avoir besoin d'analyser le texte (comme le type de colonne, si la colonne est annulable, la taille maximale de la colonne, le jeu de caractères, etc.) ...
Oh, et c'est du SQL standard (alors que SHOW ...
c'est une extension spécifique à MySQL) ...
Pour plus d'informations sur la différence entre SHOW...
les INFORMATION_SCHEMA
tables et leur utilisation , consultez la documentationINFORMATION_SCHEMA
MySQL sur en général ...
SET @@SESSION.sql_mode = 'ANSI_QUOTES';
aussi, mais je n'aime vraiment pas ça. Et je n'ai aucun problème avec les back-ticks pour la délimitation des identifiants. En fait, je les aime mieux que les guillemets doubles (les guillemets doubles font que la requête me fait du tort) ... À chacun leur ...Vous pouvez utiliser la requête suivante pour MYSQL:
Voici l'exemple de code qui montre comment implémenter la syntaxe ci-dessus en php pour répertorier les noms des colonnes:
Pour plus de détails sur la sortie de
SHOW COLUMNS FROM TABLE
visite: MySQL Refrence.la source
DESC TableName;
;-)Semble qu'il existe 2 façons:
ou
Plus d'informations
DESCRIBE
ici: http://dev.mysql.com/doc/refman/5.0/en/describe.htmlla source
DESCRIBE
c'est juste un raccourci pourSHOW COLUMNS FROM
.DESC
c'est encore plus court pourDESCRIBE
!Je l'ai fait dans le passé.
la source
Edit : Aujourd'hui, j'ai appris la meilleure façon de le faire. Veuillez consulter la réponse d'ircmaxell.
Analyser la sortie de
SHOW COLUMNS FROM table;
En savoir plus à ce sujet ici: http://dev.mysql.com/doc/refman/5.0/en/show-columns.html
la source
Utilisez
mysql_fetch_field()
pour afficher toutes les données de colonne. Voir manuel ."Avertissement Cette extension est déconseillée à partir de PHP 5.5.0 et sera supprimée à l'avenir."
la source
mysqli_num_fields()
etmysqli_fetch_field_direct()
sont les méthodes mises à jourUne ancienne fonction PHP "mysql_list_fields ()" est obsolète. Donc, aujourd'hui, la meilleure façon d'obtenir les noms des champs est une requête "SHOW COLUMNS FROM table_name [LIKE 'name']". Voici donc un petit exemple:
la source
la source
Je ne sais pas si c'est ce que vous cherchiez, mais cela a fonctionné pour moi:
Cela renvoie un simple tableau des noms de colonnes / noms de variables dans votre table ou tableau sous forme de chaînes, ce dont j'avais besoin pour créer dynamiquement des requêtes MySQL. Ma frustration était que je ne savais tout simplement pas très bien comment indexer les tableaux en PHP, donc je ne savais pas quoi faire avec les résultats de DESC ou SHOW. J'espère que ma réponse sera utile aux débutants comme moi!
Pour vérifier le résultat:
print_r($col_names);
la source
lorsque vous souhaitez vérifier la structure de toutes vos tables avec certains fichiers, utilisez ce code. Dans cette requête, je sélectionne nom_colonne, type_colonne et nom_table pour plus de détails. J'utilise order by column_type pour que je puisse le voir facilement.
Si vous ne souhaitez vérifier que le type double déposé, vous pouvez le faire facilement
si vous voulez vérifier quel champ autorise le type null, etc., vous pouvez l'utiliser
vous voulez vérifier plus puis le lien thik vous aide également.
https://dev.mysql.com/doc/refman/5.7/en/columns-table.html
la source
SHOW COLUMNS dans mysql 5.1 (pas 5.5) utilise une table de disque temporaire.
Cela peut donc être considéré comme lent dans certains cas. Au moins, il peut augmenter votre valeur created_tmp_disk_tables . Imaginez une table de disque temporaire par connexion ou par chaque demande de page.
SHOW COLUMNS n'est pas vraiment si lent, peut-être parce qu'il utilise le cache du système de fichiers. Phpmyadmin indique ~ 0,5 ms de manière cohérente. Ce n'est rien comparé à 500ms-1000ms de diffusion d'une page wordpress. Mais encore, il y a des moments où cela compte. Il y a une implication du système de disque, vous ne savez jamais ce qui se passe lorsque le serveur est occupé, le cache est plein, le disque dur est bloqué, etc.
La récupération des noms de colonne via SELECT * FROM ... LIMIT 1 était d'environ ~ 0,1 ms, et elle peut également utiliser le cache de requêtes.
Voici donc mon petit code optimisé pour obtenir les noms des colonnes d'une table, sans utiliser si possible les colonnes show :
Remarques:
la source
Essayez celui-ci, je l'utilise personnellement:
la source
EN WORDPRESS:
la source
Cette question est ancienne, mais je suis arrivé ici à la recherche d'un moyen de trouver une requête donnée ses noms de champs de manière dynamique (pas nécessairement uniquement les champs d'une table). Et comme les gens continuent de pointer cela comme la réponse à cette tâche donnée dans d'autres questions connexes, je partage la façon dont j'ai trouvé que cela pouvait être fait, en utilisant les conseils de Gavin Simpson:
Cela peut être facilement modifié pour insérer les noms de champ dans un tableau.
Utilisation d'un simple:
$sql="SELECT * FROM myTable LIMIT 1"
peut vous donner les champs de n'importe quelle table, sans avoir besoin d'utiliserSHOW COLUMNS
ou de module php supplémentaire, si nécessaire (suppression de la partie de vidage de données).J'espère que cela aide quelqu'un d'autre.
la source
si vous utilisez php, utilisez cet essentiel .
il peut obtenir des informations complètes sur certains champs sans résultat , et tous les champs personnalisés tels que:
si au-dessus de sql ne renvoie aucune donnée, obtiendra également les noms de champ aname, bname, l'autre nom de champ de b
juste deux lignes:
la source
Cette requête récupère une liste de toutes les colonnes d'une base de données sans avoir à spécifier de nom de table. Il renvoie une liste de noms de colonnes uniquement:
Cependant, lorsque j'ai exécuté cette requête dans phpmyadmin, elle a affiché une série d'erreurs. Néanmoins, cela a fonctionné. Alors utilisez-le avec prudence.
la source
La solution la plus simple de toutes les réponses:
ou
ou
la source
si vous n'avez besoin que des noms et des types de champs (peut-être pour un copier-coller facile dans Excel):
retirer
si vous voulez tous les types de données
la source
je aucun expert, mais cela fonctionne pour moi ..
la source
J'ai essayé cette requête dans SQL Server et cela a fonctionné pour moi:
la source