Раздел вопрос-ответ Получить комментарии к полям mysql-таблицы

Например, есть mysql-таблица:

CREATE TABLE `test_table` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'порядковый номер',
  `user_name` varchar(255) DEFAULT NULL COMMENT 'имя',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

Как в php-переменные или массив записать имена полей с комментариями:

  • id - порядковый номер
  • user_name - имя.

Чтобы затем выводить эти данные на странице - как описание таблицы.

share

1 ответ

В базе данных 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)

Как видно, мы извлекли имена полей и комментарии к ним. А это то, что нужно. 

Добавить комментарий
    как минимум 5 символов

    icon Вход в систему

    зарегистрироваться
    НОВЫЕ ПОЛЬЗОВАТЕЛИ