Как получить имена колонок таблицы базы данных в MySQL
В этой заметке покажу пример, как получить названия столбцов указанной таблицы MySQL в WordPress (как получить все поля таблицы).
Это может быть полезно при работе с пользовательскими таблицами. В частности:
- Когда нужно собрать заголовки для формирования эксель таблицы.
- Когда нужно добавить или удалить колонку таблицы, но перед этим проверить есть ли вообще такая колонка.
- и т.д.
MySQL Команды DESC, DESCRIBE, SHOW COLUMNS FROM
Все команды: DESC
, DESCRIBE
, SHOW COLUMNS FROM
делают одно и тоже - получает данные колонок таблицы MySQL:
mysql> DESC wp_terms; +------------+---------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+---------------------+------+-----+---------+----------------+ | term_id | bigint(20) unsigned | NO | PRI | NULL | auto_increment | | name | varchar(200) | NO | MUL | | | | slug | varchar(200) | NO | MUL | | | | term_group | bigint(10) | NO | | 0 | | +------------+---------------------+------+-----+---------+----------------+ 4 rows in set (0.001 sec)
Следующие запросы вернут тот же результат:
mysql> DESCRIBE wp_terms; mysql> SHOW COLUMNS FROM wp_terms;
Таким образом мы можем взять только первую колонку, где будут названия всех полей таблицы:
global $wpdb; $columns = $wpdb->get_col( "DESC wp_terms" ); print_r( $columns ); /* Array ( [0] => term_id [1] => name [2] => slug [3] => term_group ) */
Получим более подробную информацию о колонках таблицы MySQL:
Для этого используем $wpdb->get_results()
, а не $wpdb->get_col()
:
global $wpdb; $result = $wpdb->get_results( "DESC wp_terms" ); // или $result = $wpdb->get_results( "DESCRIBE wp_terms" ); // или $result = $wpdb->get_results( "SHOW COLUMNS FROM wp_terms" ); print_r( $result ); /* Array ( [0] => stdClass Object ( [Field] => term_id [Type] => bigint(20) unsigned [Null] => NO [Key] => PRI [Default] => [Extra] => auto_increment ) [1] => stdClass Object ( [Field] => name [Type] => varchar(200) [Null] => NO [Key] => MUL [Default] => [Extra] => ) [2] => stdClass Object ( [Field] => slug [Type] => varchar(200) [Null] => NO [Key] => MUL [Default] => [Extra] => ) [3] => stdClass Object ( [Field] => term_group [Type] => bigint(10) [Null] => NO [Key] => [Default] => 0 [Extra] => ) [4] => stdClass Object ( [Field] => term_order [Type] => int(4) [Null] => YES [Key] => [Default] => 0 [Extra] => ) ) */