Obtenir les noms de colonnes de table dans mysql?
Existe-t-il un moyen de saisir le nom des colonnes d'une table dans mysql? utiliser php
17 réponses
Vous pouvez utiliser DÉCRIRE:
DESCRIBE my_table;
Ou dans les versions plus récentes, vous pouvez utiliser INFORMATION_SCHEMA :
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'my_database' AND TABLE_NAME = 'my_table';
Ou vous pouvez utiliser afficher les colonnes :
SHOW COLUMNS FROM my_table;
Les instructions SQL suivantes sont presque équivalentes:
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'tbl_name'
[AND table_schema = 'db_name']
[AND column_name LIKE 'wild']
SHOW COLUMNS
FROM tbl_name
[FROM db_name]
[LIKE 'wild']
Référence: colonnes INFORMATION_SCHEMA
J'ai fait une fonction PDO qui renvoie tous les noms de colonnes dans un tableau simple.
public function getColumnNames($table){
$sql = "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = :table";
try {
$core = Core::getInstance();
$stmt = $core->dbh->prepare($sql);
$stmt->bindValue(':table', $table, PDO::PARAM_STR);
$stmt->execute();
$output = array();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
$output[] = $row['COLUMN_NAME'];
}
return $output;
}
catch(PDOException $pe) {
trigger_error('Could not connect to MySQL database. ' . $pe->getMessage() , E_USER_ERROR);
}
}
, La sortie sera un tableau:
Array (
[0] => id
[1] => name
[2] => email
[3] => shoe_size
[4] => likes
... )
Désolé pour le nécro, mais j'aime ma fonction ;)
P.S. Je n'ai pas inclus le noyau de classe mais vous pouvez utiliser votre propre classe.. D. S.
Cette solution provient de la ligne de commande mysql
mysql>USE information_schema;
Dans la requête ci-dessous, changez simplement en votre base de données et en votre nom de table où vous voulez juste des valeurs de champ de DESCRIBE statement
mysql> SELECT COLUMN_NAME FROM COLUMNS WHERE TABLE_SCHEMA = '<--DATABASE_NAME-->' AND TABLE_NAME='<--TABLENAME-->';
Que diriez-vous de ceci:
SELECT @cCommand := GROUP_CONCAT( COLUMN_NAME ORDER BY column_name SEPARATOR ',\n')
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'my_database' AND TABLE_NAME = 'my_table';
SET @cCommand = CONCAT( 'SELECT ', @cCommand, ' from my_database.my_table;');
PREPARE xCommand from @cCommand;
EXECUTE xCommand;
La fonction MySQL décrire le tableau devrait vous amener où vous voulez aller (mettez votre nom de table pour "table"). Vous devrez analyser la sortie, mais c'est assez facile. Si je me souviens bien, si vous exécutez cette requête, le résultat de la requête PHP accédant aux fonctions qui vous donneraient normalement une paire clé-valeur aura les noms de colonne comme clés. Mais cela fait un moment que J'ai utilisé PHP, alors ne me tenez pas à ça. :)
Il y a aussi ceci si vous préférez:
mysql_query('SHOW COLUMNS FROM tableName');
Vous pouvez également vouloir vérifier mysql_fetch_array()
, comme dans
$rs = mysql_query($sql);
while ($row = mysql_fetch_array($rs)) {
//$row[0] = 'First Field';
//$row['first_field'] = 'First Field';
}
Il est également intéressant de noter que vous pouvez utiliserEXPLAIN table_name
ce qui est synonyme de DESCRIBE table_name
et SHOW COLUMNS FROM table_name
bien que EXPLAIN soit plus couramment utilisé pour obtenir des informations sur le plan d'exécution de la requête.
Le mysql_list_fields
la fonction pourrait vous intéresser ; mais, comme le manuel indique :
Cette fonction est obsolète. Il est préférable d'utiliser
mysql_query()
pour émettez une instruction SQLSHOW COLUMNS FROM table [LIKE 'name']
à la place.
J'avais besoin de noms de colonnes comme un tableau plat, tandis que les autres réponses renvoyaient des tableaux associatifs, donc j'ai utilisé:
$con = mysqli_connect('localhost',$db_user,$db_pw,$db_name);
$table = 'people';
/**
* Get the column names for a mysql table
**/
function get_column_names($con, $table) {
$sql = 'DESCRIBE '.$table;
$result = mysqli_query($con, $sql);
$rows = array();
while($row = mysqli_fetch_assoc($result)) {
$rows[] = $row['Field'];
}
return $rows;
}
$col_names = function get_column_names($con, $table);
$col_names est maintenant égal à:
(
[0] => name
[1] => parent
[2] => number
[3] => chart_id
[4] => type
[5] => id
)
Cela a fonctionné pour moi..
$sql = "desc MyTableName";
$result = @mysql_query($sql);
while($row = @mysql_fetch_array($result)){
echo $row[0]."<br>";
}
Vous pouvez obtenir la structure entière de la table en utilisant la commande simple suivante.
DESC TableName
Ou vous pouvez utiliser la requête suivante.
SHOW COLUMNS FROM TableName
Dans mysql pour obtenir les détails des colonnes et la structure de la table en suivant des mots-clés ou des requêtes
1.DESC table_name
2.DESCRIBE table_name
3.SHOW COLUMNS FROM table_name
4.SHOW create table table_name;
5.EXPLAIN table_name
$col = $db->query("SHOW COLUMNS FROM category");
while ($fildss = $col->fetch_array())
{
$filds[] = '"{'.$fildss['Field'].'}"';
$values[] = '$rows->'.$fildss['Field'].'';
}
if($type == 'value')
{
return $values = implode(',', $values);
}
else {
return $filds = implode(',', $filds);
}
J'ai écrit un script php simple pour récupérer les colonnes de la table via PHP: Show_table_columns.php
Profitez!