php: pdo: obtenir les noms des colonnes d'une table
Comment puis-je obtenir tous les noms de colonnes d'une table à l'aide de PDO?
id name age
1 Alan 35
2 Alex 52
3 Amy 15
L'info que je veux obtenir,
id name age
EDIT:
Voici ma tentative,
$db = $connection->get_connection();
$select = $db->query('SELECT * FROM contacts');
$total_column = $select->columnCount();
var_dump($total_column);
for ($counter = 0; $counter < $total_column; $counter ++) {
$meta = $select->getColumnMeta($counter);
$column[] = $meta['name'];
}
print_r($column);
Puis-je obtenir de l',
Array
(
[0] => id
[1] => name
[2] => age
...
)
- Voulez-vous les noms de colonne dans une table, ou les noms de colonne dans le jeu d'enregistrements à partir d'une requête? Ce sont deux choses différentes effectué de deux façons différentes. Phil la réponse de l'ancien, JapanPro la réponse de ce dernier!
- Je pense que je veux seulement obtenir les noms des colonnes dans une table. Je ne comprends pas très bien ce que tu veux dire par les noms de colonne dans le jeu d'enregistrements à partir d'une requête. mais voir ma réponse dans mon montage ci-dessus. merci.
- Vous êtes en train de faire que dans la mise à jour de votre post -- vous effectuez une requête, qui renvoie un jeu d'enregistrements, alors vous êtes saisissant les noms de colonne pour qu'ensemble spécifique. Il se trouve que les noms de colonne dans le jeu de résultats sont identiques à ceux de votre table. Rappelez-vous, les colonnes SQL peut être un alias.
- si vous essayiez d'obtenir les noms de colonnes d'une table, puis @JapanPro la réponse ci-dessous est la meilleure façon de le faire-à l'aide de la
information_schema
méthode. Ce que vous faites fait le travail, mais n'est-ce pas le "droit" chemin. - lorsque vous avez une table vide votre méthode échoue, car il n'y a pas d'enregistrements à extraire les colonnes de.
Vous devez vous connecter pour publier un commentaire.
- Je résoudre le problème de la façon suivante (MySQL uniquement)
$q = $dbh->query("DESCRIBE tablename"); $table_fields = $q->fetchAll(PDO::FETCH_COLUMN);
?Cela fonctionne pour MySQL, Postgres, et probablement de toute autre driver PDO qui utilise le
LIMIT
clause.Avis
LIMIT 0
est ajouté pour améliorer les performances:$columns = array_keys($rs->fetchAll(PDO::FETCH_ASSOC));
... j'ai pas essayer.LIMIT 1
(dans une table vide), il fonctionne?SELECT * FROM my_table WHERE id=0
et remplir tous les tableaux à une ligne de données.Mes 2 cents:
Et vous obtiendrez les noms de colonne dans un tableau dans le var $champs.
id
colonnes.Fonction PHP
crédits : http://www.sitepoint.com/forums/php-application-design-147/get-pdo-column-name-easy-way-559336.html
schema_name
àwhere
information_schema
au lieu de quelque chose DB-spécifique.information_schema
MySQL spécifique? Cette question n'est pas baliséMySQL
de sorte qu'il pourrait être n'importe quoi. Rappelez-vous, la méthode dans ma réponse n'a probablement pas fonctionner sur tous les DB soit 😉information_schema
fait partie de la norme ANSI. Il a été mis en œuvre dans MySQL, PostgreSQL et MYSQL. À moins que l'OP est l'utilisation d'Oracle ou SQLite, il devrait fonctionner très bien pour lui (en supposant que cette réponse était ce qu'il voulait).myTable
. Le résultat est une liste combinée des colonnes de deux les tables, au lieu de la liste des colonnes de la table en particulier dans la base de données actuelle.Voici la fonction que j'utilise. Créé sur la base d' @Lauer réponse ci-dessus et quelques autres ressources:
Exemple D'Utilisation:
$columns = getColumns('name_of_table'); //OR getColumns($name_of_table); if you are using variable.
C'est une vieille question, mais voici ma contribution
il suffit de mettre votre variable pour votre objet pdo et le nom de la table. Fonctionne pour moi
PDOStatement::getColumnMeta()
Comme Charle est mentionné, c'est un exposé de la méthode, le sens qu'il récupère les données de la colonne à partir d'une requête préparée (requête).
Cette approche fonctionne pour moi dans SQLite et MySQL. Il peut travailler avec d'autres, s'il vous plaît laissez-moi savoir votre expérience.
DELETE FROM table
)Code:
Je n'ai pas la certitude que ce n'est valable SQL par l'ANSI ou l'autre, mais cela fonctionne pour moi.
Très utile ici pour SQLite3. Parce que l'OP n'indique pas MySQL spécifiquement et il y avait de l'échec d'une tentative d'utilisation de certaines solutions sur SQLite.
Ce retourne un tableau. Depuis c'est un dump de l'information, vous aurez besoin de parcourir et de filtrer les résultats pour obtenir quelque chose comme ceci:
C'est particulièrement agréable d'avoir, quand la table est vide.
Ma contribution SEULEMENT pour SQLite:
Il suffit de Mettre votre nom de Base de données,nom d'utilisateur,mot de passe (Où j'ai marqué ?) et le nom de la table.& Yuuppiii!.... vous obtenez toutes les données de votre base de données principale (avec le nom de colonne)
/* Récupération de toutes les données dans un tableau html. *
/
doit être
Il n'y a pas besoin de faire un secondaire de la requête, qui est muet. Juste utiliser le construit en oci_field_name() fonction:
Voici un exemple: