最近研究ECShop的源码,需要将数据表的结构转成HTML。在Google上搜了一番后,做出了一个db2html.php。这里分享出来,希望对大家能有所帮助。 <?php $dbhost = "localhost"; $dbuser = "root"; $dbpass = ""; $dbname = "ecshop"; $charset = "utf8"; $tables = array(); fetch_tables(); function fetch_tables() { global $dbhost, $dbuser, $dbpass, $dbname, $charset, $tables; $con = mysql_connect($dbhost, $dbuser, $dbpass); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_query("SET character_set_connection=$charset, character_set_results=$charset, character_set_client=binary", $con); $sql = "SELECT c.table_name, c.column_name, c.ordinal_position, c.column_type, c.is_nullable, case when c.column_key = 'PRI' then 'YES' else '' end as is_primarykey, c.column_comment FROM information_schema.columns c, information_schema.tables t WHERE c.table_schema = t.table_schema AND c.table_name = t.table_name and c.table_schema = '$dbname' order by c.table_name, c.ordinal_position"; $result = mysql_query($sql, $con); while (($array = mysql_fetch_array($result, MYSQL_ASSOC)) !== false) { $tables[$array["table_name"]][] = array( "column_name" => $array["column_name"], "column_type" => $array["column_type"], "is_nullable" => $array["is_nullable"], "is_primarykey" => $array["is_primarykey"], "ordinal_position" => $array["ordinal_position"], "column_comment" => $array["column_comment"] ); } mysql_close($con); } ?> <html> <head> <title>db2html</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <style> .tablelist td, .tablelist th { padding: 5px; } </style> <a name="top"></a> <?php foreach ($tables as $name => $columns) { ?> <strong><a href="#<?php echo $name; ?>"><?php echo $name; ?></a></strong> <?php } ?> <?php foreach ($tables as $name => $columns) { ?> <p><hr /></p><p><h2><a name="<?php echo $name; ?>"></a>表名: <?php echo $name; ?></h2> <table cellspacing="0" cellpadding="0" border="1" align="center" width="100%" class="tablelist"> <tr> <th width="25%" align="left">字段</th> <th width="25%" align="left">类型</th> <th width="15%">是否允许为空?</th> <th width="15%">是否为主键?</th> <th width="20%" align="left">说明</th> </tr> <?php foreach ($columns as $column) { ?> <tr> <td><?php echo $column['column_name']; ?></td> <td><?php echo $column['column_type']; ?></td> <td align="center"><?php echo $column['is_nullable']; ?></td> <td align="center"><?php echo $column['is_primarykey'] != '' ? $column['is_primarykey'] : ' '; ?></td> <td><?php echo $column['column_comment'] != '' ? $column['column_comment'] : ' '; ?></td> </tr> <?php } ?> </table><br/> <a href="#top" mce_href="#top">回到顶部</a> </p> <?php } ?> </body> </html>