用php生成数据字典详解编程语言

<?php 
    header("Content-type: text/html; charset=utf-8"); 
       $dbserver = "localhost"; 
        $dbusername="root"; 
        $dbpassword="root"; 
        $title = '数据字典'; 
        if($_GET['db'] == ''){ 
            $database = "aa"; 
        }else{ 
            $database = $_GET['db']; 
        } 
 
        $mysql_conn = @mysql_connect("{$dbserver}","{$dbusername}","{$dbpassword}") or die("Mysql connect is error."); 
         
        mysql_select_db($database,$mysql_conn); 
        $result = mysql_query('show tables',$mysql_conn); 
        mysql_query('SET NAMES utf8',$mysql_conn); 
        //取得所有表名 
        while($row = mysql_fetch_array($result)){ 
            $tables[]['TABLE_NAME'] = $row[0]; 
        } 
        //循环取得所有表的备注及表中列消息 
        foreach($tables as $k=>$v){ 
            $sql = 'SELECT * FROM '; 
            $sql .= 'INFORMATION_SCHEMA.TABLES '; 
            $sql .= 'WHERE '; 
            $sql .= "table_name = '{$v['TABLE_NAME']}' AND table_schema = '{$database}'"; 
            $table_result = mysql_query($sql,$mysql_conn); 
            while($t = mysql_fetch_array($table_result)){ 
                $tables[$k]['TABLE_COMMENT'] = $t['TABLE_COMMENT']; 
            } 
            $sql = 'SELECT * FROM '; 
            $sql .= 'INFORMATION_SCHEMA.COLUMNS '; 
            $sql .= 'WHERE '; 
            $sql .= "table_name = '{$v['TABLE_NAME']}' AND table_schema = '{$database}'"; 
             
            $fields = array(); 
            $field_result = mysql_query($sql,$mysql_conn); 
            while($t = mysql_fetch_array($field_result)){ 
                $fields[] = $t; 
            } 
            $tables[$k]['COLUMN'] = $fields; 
        } 
        mysql_close($mysql_conn); 
         
        $html = ''; 
        //循环所有表 
        foreach($tables as $k=>$v){ 
            $html .='<table border="1" cellspacing="0" cellpadding="0" align="center">'; 
            $html .='<caption>'.$v['TABLE_NAME'] .' '.$v['TABLE_COMMENT'] .'</caption>'; 
            $html .='<tbody><tr><th>字段名</th><th>数据类型</th><th>默认值</th><th>允许非空</th><th>自动递增</th><th>备注</th></tr>'; 
            $html .=''; 
             
            foreach($v['COLUMN'] AS $f){ 
                $html .='<td class="c1">'.$f['COLUMN_NAME'].'</td>'; 
                $html .='<td class="c2">'.$f['COLUMN_TYPE'].'</td>'; 
                $html .='<td class="c3">'.$f['COLUMN_DEFAULT'].'</td>'; 
                $html .='<td class="c4">'.$f['IS_NULLABLE'].'</td>'; 
                $html .='<td class="c5">'.($f['EXTRA']=='auto_increment'?'是':' ').'</td>'; 
                $html .='<td class="c6">'.$f['COLUMN_COMMENT'].'</td>'; 
                $html .= '</tr>'; 
            } 
            $html .='</tbody></table></p>'; 
        } 
        echo '<html> 
    <meta charset="UTF-8"> 
    <title>自动生成数据字典</title> 
    <style> 
        body,td,th {font-family:"宋体"; font-size:12px;}   
        table{border-collapse:collapse;border:1px solid #CCC;background:#efefef;}   
        table caption{text-align:left; background-color:#fff; line-height:2em; font-size:14px; font-weight:bold; }   
        table th{text-align:left; font-weight:bold;height:26px; line-height:26px; font-size:12px; border:1px solid #CCC;}   
        table td{height:20px; font-size:12px; border:1px solid #CCC;background-color:#fff;}   
        .c1{ width: 120px;}   
        .c2{ width: 120px;}   
        .c3{ width: 70px;}   
        .c4{ width: 80px;}   
        .c5{ width: 80px;}   
        .c6{ width: 270px;} 
    </style> 
    <body>'; 
    echo '<h1 style="text-align:center;">'.$title.'</h1>'; 
    echo $html; 
    echo '</body></html>'; 
 
?>

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/20426.html

(0)
上一篇 2021年7月19日 23:26
下一篇 2021年7月19日 23:26

相关推荐

发表回复

登录后才能评论