最新消息: 新版网站上线了!!!

php 生成数据库字典的方法

  1. <?php 
  2. /** 
  3.  * 生成mysql数据字典 
  4.  */ 
  5. header("Content-type:text/html;charset=utf-8"); 
  6. // 配置数据库 
  7. $database = array(); 
  8. $database['DB_HOST'] = 'localhost'
  9. $database['DB_NAME'] = 'test'
  10. $database['DB_USER'] = 'root'
  11. $database['DB_PWD'] = ''
  12.  
  13.  
  14. $mysql_conn = @mysql_connect("{$database['DB_HOST']}""{$database['DB_USER']}""{$database['DB_PWD']}"or die("Mysql connect is error."); 
  15. mysql_select_db($database['DB_NAME'], $mysql_conn); 
  16. $result = mysql_query('show tables'$mysql_conn); 
  17. mysql_query("set names utf8"); 
  18. // 取得所有表名 
  19. while ($row = mysql_fetch_array($result)) 
  20.     $tables[]['TABLE_NAME'] = $row[0]; 
  21. // 循环取得所有表的备注及表中列消息 
  22. foreach($tables as $k => $v
  23.     $sql = 'SELECT * FROM '
  24.     $sql .= 'information_schema.TABLES '
  25.     $sql .= 'WHERE '
  26.     $sql .= "table_name = '{$v['TABLE_NAME']}' AND table_schema = '{$database['DB_NAME']}'"
  27.     $table_result = mysql_query($sql$mysql_conn); 
  28.     while ($t = mysql_fetch_array($table_result)) 
  29.     { 
  30.         $tables[$k]['TABLE_COMMENT'] = $t['TABLE_COMMENT']; 
  31.     } 
  32.     $sql = 'SELECT * FROM '
  33.     $sql .= 'information_schema.COLUMNS '
  34.     $sql .= 'WHERE '
  35.     $sql .= "table_name = '{$v['TABLE_NAME']}' AND table_schema = '{$database['DB_NAME']}'"
  36.  
  37.     $fields = array(); 
  38.     $field_result = mysql_query($sql$mysql_conn); 
  39.     while ($t = mysql_fetch_array($field_result)) 
  40.     { 
  41.         $fields[] = $t
  42.     } 
  43.     $tables[$k]['COLUMN'] = $fields
  44. mysql_close($mysql_conn); 
  45.  
  46. $html = ''
  47. // 循环所有表 
  48. //print_r($tables); 
  49. foreach($tables as $k => $v
  50.     $html .= '<table border="1" cellspacing="0" cellpadding="0" align="center">'
  51.     $html .= '<caption>表名:' . $v['TABLE_NAME'] . ' ' . $v['TABLE_COMMENT'] . '</caption>'
  52.     $html .= '<tbody><tr><th>字段名</th><th>数据类型</th><th>默认值</th><th>允许非空</th><th>自动递增</th><th>备注</th></tr>'
  53.     $html .= ''
  54.  
  55.     foreach($v['COLUMN'] AS $f
  56.     { 
  57.         $html .= '<td class="c1">' . $f['COLUMN_NAME'] . '</td>'
  58.         $html .= '<td class="c2">' . $f['COLUMN_TYPE'] . '</td>'
  59.         $html .= '<td class="c3">' . $f['COLUMN_DEFAULT'] . '</td>'
  60.         $html .= '<td class="c4">' . $f['IS_NULLABLE'] . '</td>'
  61.         $html .= '<td class="c5">' . ($f['EXTRA'] == 'auto_increment'?'是':' ') . '</td>'
  62.         $html .= '<td class="c6">' . $f['COLUMN_COMMENT'] . '</td>'
  63.         $html .= '</tr>'
  64.     } 
  65.     $html .= '</tbody></table></p>'
  66.  
  67. /* 生成word */ 
  68. //header ( "Content-type:application/vnd.ms-word" ); 
  69. //header ( "Content-Disposition:attachment;filename={$database['DB_NAME']}数据字典.doc" ); 
  70. /* 生成excel*/ 
  71. //header ( "Content-type:application/vnd.ms-excel" ); 
  72. //header ( "Content-Disposition:attachment;filename={$database['DB_NAME']}数据字典.xls" ); 
  73.  
  74. // 输出 
  75. echo '<html> 
  76.     <meta charset="utf-8"
  77.     <title>自动生成数据字典</title> 
  78.     <style> 
  79.         body,td,th {font-family:"宋体"; font-size:12px;}   
  80.         table,h1,p{width:960px;margin:0px auto;} 
  81.         table{border-collapse:collapse;border:1px solid #CCC;background:#efefef;}   
  82.         table caption{text-align:left; background-color:#fff; line-height:2em; font-size:14px; font-weight:bold; }   
  83.         table th{text-align:left; font-weight:bold;height:26px; line-height:26px; font-size:12px; border:1px solid #CCC;padding-left:5px;}   
  84.         table td{height:20px; font-size:12px; border:1px solid #CCC;background-color:#fff;padding-left:5px;}   
  85.         .c1{ width: 150px;}   
  86.         .c2{ width: 150px;}   
  87.         .c3{ width: 80px;}   
  88.         .c4{ width: 100px;}   
  89.         .c5{ width: 100px;}   
  90.         .c6{ width: 300px;} 
  91.     </style> 
  92.     <body>'; 
  93. echo '<h1 style="text-align:center;">'.$database['DB_NAME'].'数据字典</h1>'
  94. echo '<p style="text-align:center;margin:20px auto;">生成时间:' . date('Y-m-d H:i:s') . '</p>'
  95. echo $html
  96. echo '<p style="text-align:left;margin:20px auto;">总共:' . count($tables) . '个数据表</p>'
  97. echo '</body></html>'
  98.  
  99. ?> 

 

转载请注明:谷谷点程序 » php 生成数据库字典的方法