数据字典

<?php
header('content-type:text/html;charset=utf-8');
date_default_timezone_set("PRC");
define('DB_CONNECTION','mysql');
define('DB_HOST','localhost');
define('DB_USERNAME','root');
define('DB_PASSWORD','root');
define('DB_DATABASE','test');
define('DB_PORT',3306);
define('DB_CHARSET','utf8');
$title = '数据字典';
$html = '';
//连库
try {
    $pdo=new PDO(DB_CONNECTION.":host=".DB_HOST.";dbname=".DB_DATABASE,DB_USERNAME,DB_PASSWORD);
}catch (PDOException $e){
    echo '数据库连接失败:'.$e->getMessage();
    exit;
}
$table_result=$pdo->query('show tables');
$arr=$table_result->fetchAll(PDO::FETCH_ASSOC);
//取得所有的表名
foreach ($arr as $val){
    $tables[]['TABLE_NAME'] =$val['Tables_in_test'];
}
//循环取得所有表的备注及表中列消息
foreach ($tables AS $k=>$v) {
    $fields = array();
    $sql1  = "SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE table_name = '{$v['TABLE_NAME']}'";
    $sql2  = "SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = '{$v['TABLE_NAME']}'";
    $t1=$pdo->query($sql1)->fetchAll(PDO::FETCH_ASSOC);
    $t2=$pdo->query($sql2)->fetchAll(PDO::FETCH_ASSOC);
    foreach($t1 as $v1) {
        $tables[$k]['TABLE_COMMENT'] = $v1['TABLE_COMMENT'];
    }
    foreach ($t2 as $v2) {
        $fields[] = $v2;
    }
    $tables[$k]['COLUMN'] = $fields;
}
    $html = '<div style="text-align:right"><h3>查询时间:'.date("Y/m/d H:i:s",time()).'</h3></div>';
//循环所有表
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>';
    foreach ($v['COLUMN'] AS $f) {
        $html .= '<tr>
                    <td class="c1">' . $f['COLUMN_NAME'] . '</td>
                    <td class="c2">' . $f['COLUMN_TYPE'] . '</td>
                    <td class="c3"> ' . $f['COLUMN_DEFAULT'] . '</td>
                    <td class="c4"> ' . $f['IS_NULLABLE'] . '</td>
                    <td class="c5">' . ($f['EXTRA']=='auto_increment'?'是':' ') . '</td>
                    <td class="c6"> ' . $f['COLUMN_COMMENT'] . '</td>
                   </tr>';
    }
    $html .= '</tbody></table>';
}
//输出
echo '<html>
         <head>
         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
         <title>'.$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{font-weight:bold;height:26px; line-height:26px; font-size:12px; border:1px solid #CCC;text-align:center}
             table td{height:20px; font-size:12px; border:1px solid #CCC;background-color:#fff;text-align:center}
             .c1{ width: 120px;}.c2{ width: 120px;}.c3{ width: 70px;}.c4{ width: 80px;}.c5{ width: 80px;}.c6{ width: 270px;}
         </style>
         </head>
         <body>
            <h1 style="text-align:center;">'.$title.'</h1>'.$html.'
         </body>
       </html>';

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值