Obter a estrutura completa de um banco de dados em PHP

Gustavo Paes, 16/01/2011

Às vezes pode ser interessante obter a estrutura completa — todas as tabelas e suas respectivas colunas e tipos de dados — de um database. Com essas informações é possível, por exemplo, automatizar a criação de formulários ou classes. É muito fácil fazer isso no MySQL (e, provavelmente, igualmente fácil em postgreSQL). No MySQL você tem que rodar duas query. A primeira é usando o SHOW, onde você irá obter todas as tabelas do database. E, em seguida, para cada tabela encontrada, você deve executar o DESCRIBE. php $conn = mysql_connect("local do banco", "usuario", "senha"); mysql_select_db("database"); // Obtém todas as tabelas do database $query_tables = mysql_query("SHOW TABLES"); while($table = mysql_fetch_array($query_tables)) { // O nome da tabela $table_name = $table[0]; // Obtém toda a estrutura de dados da tabela $query_columns = mysql_query("DESCRIBE {$table_name}"); while($column = mysql_fetch_array($query_columns)) { var_dump($column); } } Dentro do segundo while você terá em suas mãos todas as colunas da tabela e suas respectivas estruturas de dados. Um exemplo é o array abaixo: json array(12) { [0]=> string(4) "nome" ["Field"]=> string(4) "nome" [1]=> string(11) "varchar(50)" ["Type"]=> string(11) "varchar(50)" [2]=> string(3) "YES" ["Null"]=> string(3) "YES" [3]=> string(0) "" ["Key"]=> string(0) "" [4]=> NULL ["Default"]=> NULL [5]=> string(0) "" ["Extra"]=> string(0) "" } Mais informações no site do MySQL: http://dev.mysql.com/doc/refman/5.0/en/describe.html http://dev.mysql.com/doc/refman/5.0/en/show.html http://dev.mysql.com/doc/refman/5.0/en/show-tables.html http://dev.mysql.com/doc/refman/5.0/en/extended-show.html