В базе данных information_schema в таблице columns хранятся все поля всех mysql-таблиц.
mysql> show create table information_schema.columns\G;
*************************** 1. row ***************************
Table: COLUMNS
Create Table: CREATE TEMPORARY TABLE `COLUMNS` (
`TABLE_CATALOG` varchar(512) NOT NULL DEFAULT '',
`TABLE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
`TABLE_NAME` varchar(64) NOT NULL DEFAULT '',
`COLUMN_NAME` varchar(64) NOT NULL DEFAULT '',
`ORDINAL_POSITION` bigint(21) unsigned NOT NULL DEFAULT '0',
`COLUMN_DEFAULT` longtext,
`IS_NULLABLE` varchar(3) NOT NULL DEFAULT '',
`DATA_TYPE` varchar(64) NOT NULL DEFAULT '',
`CHARACTER_MAXIMUM_LENGTH` bigint(21) unsigned DEFAULT NULL,
`CHARACTER_OCTET_LENGTH` bigint(21) unsigned DEFAULT NULL,
`NUMERIC_PRECISION` bigint(21) unsigned DEFAULT NULL,
`NUMERIC_SCALE` bigint(21) unsigned DEFAULT NULL,
`DATETIME_PRECISION` bigint(21) unsigned DEFAULT NULL,
`CHARACTER_SET_NAME` varchar(32) DEFAULT NULL,
`COLLATION_NAME` varchar(32) DEFAULT NULL,
`COLUMN_TYPE` longtext NOT NULL,
`COLUMN_KEY` varchar(3) NOT NULL DEFAULT '',
`EXTRA` varchar(30) NOT NULL DEFAULT '',
`PRIVILEGES` varchar(80) NOT NULL DEFAULT '',
`COLUMN_COMMENT` varchar(1024) NOT NULL DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=utf8
1 row in set (0,00 sec)
Напишем sql-запрос для получения полей и комментариев к ним:
SELECT column_name,column_comment
FROM information_schema.columns
WHERE table_schema='your_database' and table_name='your_table';
-
your_database - имя вашей базы данных
-
table_name - имя таблицы в базе данных.
Подставив настоящее имя таблицы и базы данных, проверим результат mysql-запроса. Предварительно создаём тестовую таблицу:
CREATE TABLE `test_table` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'порядковый номер',
`user_name` varchar(100) NOT NULL COMMENT 'имя',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
Извлекаем комментарии к mysql полям:
mysql> SELECT column_name,column_comment
-> FROM information_schema.columns
-> WHERE table_schema='test' and table_name='test_table';
+-------------+---------------------------------+
| column_name | column_comment |
+-------------+---------------------------------+
| id | порядковый номер |
| user_name | имя |
+-------------+---------------------------------+
2 rows in set (0,00 sec)
Как видно, мы извлекли имена полей и комментарии к ним. А это то, что нужно.