Get table column names in MySQL? Get table column names in MySQL? php php

Get table column names in MySQL?


You can use DESCRIBE:

DESCRIBE my_table;

Or in newer versions you can use INFORMATION_SCHEMA:

SELECT COLUMN_NAME  FROM INFORMATION_SCHEMA.COLUMNS  WHERE TABLE_SCHEMA = 'my_database' AND TABLE_NAME = 'my_table';

Or you can use SHOW COLUMNS:

SHOW COLUMNS FROM my_table;

Or to get column names with comma in a line:

SELECT group_concat(COLUMN_NAME)  FROM INFORMATION_SCHEMA.COLUMNS  WHERE TABLE_SCHEMA = 'my_database' AND TABLE_NAME = 'my_table';


The following SQL statements are nearly equivalent:

SELECT COLUMN_NAME  FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'tbl_name'  [AND table_schema = 'db_name']  [AND column_name LIKE 'wild']SHOW COLUMNSFROM tbl_name[FROM db_name][LIKE 'wild']

Reference: INFORMATION_SCHEMA COLUMNS


I made a PDO function which returns all the column names in an simple array.

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);    }}

The output will be an array:

Array ([0] => id[1] => name[2] => email[3] => shoe_size[4] => likes... )

Sorry for the necro but I like my function ;)

P.S. I have not included the class Core but you can use your own class.. D.S.