Получить имена столбцов таблицы в MySQL? - PullRequest
259 голосов
/ 06 октября 2009

Есть ли способ получить имя столбца таблицы в mysql? используя php

Ответы [ 17 ]

476 голосов
/ 06 октября 2009

Вы можете использовать ОПИСАТЬ :

DESCRIBE my_table;

Или в более новых версиях вы можете использовать INFORMATION_SCHEMA :

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

Или вы можете использовать ПОКАЗАТЬ КОЛОННЫ :

SHOW COLUMNS FROM my_table;
34 голосов
/ 06 октября 2009

Следующие операторы SQL почти эквивалентны:

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']

Ссылка: ИНФОРМАЦИЯ_SCHEMA КОЛОННЫ

20 голосов
/ 15 декабря 2012

Я сделал функцию PDO, которая возвращает все имена столбцов в простом массиве.

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

На выходе будет массив:

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

Извините за некро, но мне нравится моя функция;)

P.S. Я не включил класс Core, но вы можете использовать свой собственный класс .. D.S.

6 голосов
/ 13 апреля 2013

Это решение из командной строки mysql

mysql>USE information_schema;

В приведенном ниже запросе просто измените <- DATABASE_NAME -> на свою базу данных, а <- TABLENAME -> на имя таблицы, где вы просто хотите указать значения полей оператора DESCRIBE

mysql> SELECT COLUMN_NAME FROM COLUMNS WHERE TABLE_SCHEMA = '<--DATABASE_NAME-->' AND   TABLE_NAME='<--TABLENAME-->';
5 голосов
/ 23 сентября 2014

Как насчет этого:

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;
3 голосов
/ 06 октября 2009

Функция MySQL описать таблицу должен получить вас, куда вы хотите пойти (введите название таблицы для "таблицы"). Вы должны будете проанализировать некоторые результаты, но это довольно просто. Насколько я помню, если вы выполните этот запрос, в результате запроса PHP, получающего доступ к функциям, которые обычно дают вам пару ключ-значение, в качестве ключей будут использоваться имена столбцов. Но прошло уже много времени с тех пор, как я использовал PHP, поэтому не удерживайте меня на этом. :)

3 голосов
/ 07 октября 2009

Вы также можете проверить mysql_fetch_array(), например:

$rs = mysql_query($sql);
while ($row = mysql_fetch_array($rs)) {
//$row[0] = 'First Field';
//$row['first_field'] = 'First Field';
}
3 голосов
/ 06 октября 2009

Есть также, если вы предпочитаете:

mysql_query('SHOW COLUMNS FROM tableName'); 
3 голосов
/ 22 мая 2013

Также интересно отметить, что вы можете использовать
EXPLAIN table_name что является синонимом DESCRIBE table_name и SHOW COLUMNS FROM table_name хотя EXPLAIN чаще используется для получения информации о плане выполнения запроса.

3 голосов
/ 06 октября 2009

Просмотр:

mysql_query('DESCRIBE '.$table);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...