Я написал код для этого в Zend_Db_Adapter_Mysqli
::describeTable()
.
Он обрабатывает varchar, char, decimal, float и все целочисленные типы MySQL.
Я не буду размещать код здесь из-за лицензионной политики StackOverflow CC-wiki, но посмотрите его по этой ссылке.
mysql_fetch_field()
сообщает только типы данных для наборов результатов запроса, но не постоянных таблиц.
INFORMATION_SCHEMA
- еще один вариант, но ранняя реализация MySQL имеет невероятно низкую производительность, что затрудняет его использование в веб-приложении, которое требует быстрого времени отклика. Некоторые изменения в MySQL 5.1.23 пытались улучшить производительность, но некоторые люди по-прежнему сообщают о проблемах.