php生成mysql数据字典

有时候我们拿到别人的数据库,却没有数据字典,这个php小程序帮你轻松解决。

代码是网上找到的,当然,这段代码也仅仅是生成了数据字典,视图,存储过程等等是木有的哦。

 

[php][/php] view plaincopy

  1. <?php
  2. /**
  3.  * 生成mysql数据字典
  4.  */
  5. //配置数据库
  6. $dbserver   = “127.0.0.1”;
  7. $dbusername = “root”;
  8. $dbpassword = “”;
  9. $database      = “”;
  10. //其他配置
  11. $title = ‘数据字典’;
  12. $mysql_conn = @mysql_connect(“$dbserver”, “$dbusername”, “$dbpassword”) or die(“Mysql connect is error.”);
  13. mysql_select_db($database, $mysql_conn);
  14. mysql_query(‘SET NAMES utf8’, $mysql_conn);
  15. $table_result = mysql_query(‘show tables’, $mysql_conn);
  16. //取得所有的表名
  17. while ($row = mysql_fetch_array($table_result)) {
  18.     $tables[][‘TABLE_NAME’] = $row[0];
  19. }
  20. //循环取得所有表的备注及表中列消息
  21. foreach ($tables AS $k=>$v) {
  22.     $sql  = ‘SELECT * FROM ‘;
  23.     $sql .= ‘INFORMATION_SCHEMA.TABLES ‘;
  24.     $sql .= ‘WHERE ‘;
  25.     $sql .= “table_name = ‘{$v[‘TABLE_NAME’]}’  AND table_schema = ‘{$database}'”;
  26.     $table_result = mysql_query($sql, $mysql_conn);
  27.     while ($t = mysql_fetch_array($table_result) ) {
  28.         $tables[$k][‘TABLE_COMMENT’] = $t[‘TABLE_COMMENT’];
  29.     }
  30.     $sql  = ‘SELECT * FROM ‘;
  31.     $sql .= ‘INFORMATION_SCHEMA.COLUMNS ‘;
  32.     $sql .= ‘WHERE ‘;
  33.     $sql .= “table_name = ‘{$v[‘TABLE_NAME’]}’ AND table_schema = ‘{$database}'”;
  34.     $fields = array();
  35.     $field_result = mysql_query($sql, $mysql_conn);
  36.     while ($t = mysql_fetch_array($field_result) ) {
  37.         $fields[] = $t;
  38.     }
  39.     $tables[$k][‘COLUMN’] = $fields;
  40. }
  41. mysql_close($mysql_conn);
  42. $html = ”;
  43. //循环所有表
  44. foreach ($tables AS $k=>$v) {
  45.     //$html .= ‘<p><h2>’. $v[‘TABLE_COMMENT’] . ‘ </h2>’;
  46.     $html .= ‘<table  border=”1″ cellspacing=”0″ cellpadding=”0″ align=”center”>’;
  47.     $html .= ‘<caption>’ . $v[‘TABLE_NAME’] .’  ‘. $v[‘TABLE_COMMENT’]. ‘</caption>’;
  48.     $html .= ‘<tbody><tr><th>字段名</th><th>数据类型</th><th>默认值</th>
  49.     <th>允许非空</th>
  50.     <th>自动递增</th><th>备注</th></tr>’;
  51.     $html .= ”;
  52.     foreach ($v[‘COLUMN’] AS $f) {
  53.         $html .= ‘<tr><td class=”c1″>’ . $f[‘COLUMN_NAME’] . ‘</td>’;
  54.         $html .= ‘<td class=”c2″>’ . $f[‘COLUMN_TYPE’] . ‘</td>’;
  55.         $html .= ‘<td class=”c3″> ‘ . $f[‘COLUMN_DEFAULT’] . ‘</td>’;
  56.         $html .= ‘<td class=”c4″> ‘ . $f[‘IS_NULLABLE’] . ‘</td>’;
  57.         $html .= ‘<td class=”c5″>’ . ($f[‘EXTRA’]==’auto_increment’?’是’:’ ‘) . ‘</td>’;
  58.         $html .= ‘<td class=”c6″> ‘ . $f[‘COLUMN_COMMENT’] . ‘</td>’;
  59.         $html .= ‘</tr>’;
  60.     }
  61.     $html .= ‘</tbody></table></p>’;
  62. }
  63. //输出
  64. echo ‘<html>
  65. <head>
  66. <meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
  67. <title>’.$title.'</title>
  68. <style>
  69. body,td,th {font-family:”宋体”; font-size:12px;}
  70. table{border-collapse:collapse;border:1px solid #CCC;background:#efefef;}
  71. table caption{text-align:left; background-color:#fff; line-height:2em; font-size:14px; font-weight:bold; }
  72. table th{text-align:left; font-weight:bold;height:26px; line-height:26px; font-size:12px; border:1px solid #CCC;}
  73. table td{height:20px; font-size:12px; border:1px solid #CCC;background-color:#fff;}
  74. .c1{ width: 120px;}
  75. .c2{ width: 120px;}
  76. .c3{ width: 70px;}
  77. .c4{ width: 80px;}
  78. .c5{ width: 80px;}
  79. .c6{ width: 270px;}
  80. </style>
  81. </head>
  82. <body>’;
  83. echo ‘<h1 style=”text-align:center;”>’.$title.'</h1>’;
  84. echo $html;
  85. echo ‘</body></html>’;
  86. ?>

 

 

运行后的结果:

标签