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

239
demandé sur OMG Ponies 2009-10-06 20:32:12

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;
425
répondu Greg 2013-07-20 05:00:33

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

32
répondu OMG Ponies 2009-10-06 16:35:56

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.

19
répondu Philip 2012-12-15 10:37:20

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-->';
5
répondu leeladharan acharya 2013-04-13 16:45:53

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;
5
répondu Wolf Metzner 2014-09-23 17:08:45

Regardez dans:

mysql_query('DESCRIBE '.$table);
3
répondu Andy Hume 2009-10-06 16:33:56

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. :)

3
répondu dannysauer 2009-10-06 16:35:19

Il y a aussi ceci si vous préférez:

mysql_query('SHOW COLUMNS FROM tableName'); 
3
répondu James Goodwin 2009-10-06 16:36:13

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';
}
3
répondu thewebguy 2009-10-07 01:46:51

Il est également intéressant de noter que vous pouvez utiliser
EXPLAIN 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.

3
répondu AnthonyS 2018-01-03 00:09:45

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 SQL SHOW COLUMNS FROM table [LIKE 'name'] à la place.

2
répondu Pascal MARTIN 2009-10-06 16:36:21

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
)
2
répondu duhaime 2017-10-21 16:01:03

Cela a fonctionné pour moi..

$sql = "desc MyTableName";
$result = @mysql_query($sql);
while($row = @mysql_fetch_array($result)){
    echo $row[0]."<br>";
}
1
répondu Ad Kahn 2016-10-11 17:26:42

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
1
répondu Harish Kumar 2016-11-18 07:43:36

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

1
répondu denny 2016-12-22 20:02:06
$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);
}
1
répondu ibRQD 2017-09-17 03:19:31

J'ai écrit un script php simple pour récupérer les colonnes de la table via PHP: Show_table_columns.php

Profitez!

1
répondu Hussnain sheikh 2017-12-19 12:12:36