zoukankan      html  css  js  c++  java
  • [PHP] 生成数据库字典的PHP代码支持PDO扩展

    有时候没有数据库字典设计文档,根据现有的数据库注释进行生成一份

    <?php
    header('content-type:text/html;charset=utf-8');
    define('DB_HOST','192.168.11.7');
    define('DB_USER','root');
    define('DB_PASS','centos');
    define('DB_NAME','new_admin');
    define('DB_PORT',3306);
    define('DB_CHAR','utf8');
    define('APPNAME','new_admin');
    $dbh = new PDO("mysql:host=".DB_HOST.":".DB_PORT.";dbname=".DB_NAME,DB_USER,DB_PASS);
    $dbh->exec('set names ' . DB_CHAR);
    $sth = $dbh->prepare("SHOW TABLE STATUS FROM " . DB_NAME);
    $sth->execute();
    $array = $sth->fetchAll(PDO::FETCH_ASSOC);
    $tab_count = count($array);
    echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="zh"> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>'.APPNAME.'--数据字典</title> 
    <style type="text/css"> 
      table caption, table th, table td { 
        padding: 0.1em 0.5em 0.1em 0.5em; 
        margin: 0.1em; 
        vertical-align: top; 
      } 
      th { 
        font-weight: bold; 
        color: black; 
        background: #D3DCE3; 
      } 
      table tr.odd th, .odd { 
        background: #E5E5E5; 
      } 
      table tr.even th, .even { 
        background: #f3f3f3; 
      } 
      .db_table{ 
        border-top:1px solid #333; 
         100%;
      } 
      .title{font-weight:bold;} 
    </style> 
    </head> 
    <body> 
    <div style="text-align:center;background:#D3DCE3;font-size:19px;"> 
      <b>'.APPNAME.'--数据字典</b> 
    </div> 
    <div style="background:#f3f3f3;text-align:center;">(注:共'.$tab_count.'张表,按ctrl+F查找关键字)</div>'."
    ";
    for($i=0;$i<$tab_count;$i++){
        echo '<ul type="square">'."
    ";
        echo ' <li class="title">';
        echo ($i+1).'、表名:[' . $array[$i]['Name'] . ']   注释:' . $array[$i]['Comment'];
        echo '</li>'."
    ";
    //查询数据库字段信息
        $tab_name = $array[$i]['Name'];
        $sql_tab='show full fields from `' . $array[$i]['Name'].'`';
        $sth = $dbh->prepare($sql_tab);
        $sth->execute();
        $tab_array = $sth->fetchAll(PDO::FETCH_ASSOC);
    //show keys
        $sth = $dbh->prepare("show keys from `".$array[$i]['Name'].'`');
        $sth->execute();
        $arr_keys = $sth->fetchAll(PDO::FETCH_ASSOC);
        echo '<li style="list-style: none outside none;"><table border="0" class="db_table" >';
        echo '<tr class="head"> 
        <th style="180px">字段</th> 
        <th style="150px">类型</th> 
        <th style="50px">为空</th> 
        <th style="180px">额外</th> 
        <th style="180px">默认</th> 
        <th style="150px">整理</th> 
        <th>备注</th></tr>';
        for($j=0;$j<count($tab_array);$j++){
            echo '    <tr class="'.($j%2==0?"odd":"even").'">'."
    ";
            echo '     <td>' . $tab_array[$j]['Field'] . '</td>'."
    ";
            echo '     <td>' . $tab_array[$j]['Type'] . '</td>'."
    ";
            echo '     <td>' . $tab_array[$j]['Null'] . '</td>'."
    ";
            echo '     <td>' . $tab_array[$j]['Extra'] . '</td>'."
    ";
            echo '     <td>' . $tab_array[$j]['Default'] . '</td>'."
    ";
            echo '     <td>' . $tab_array[$j]['Collation'] . '</td>'."
    ";
            echo '     <td>' . $tab_array[$j]['Comment'] . '</td>'."
    ";
            echo '    </tr>'."
    ";
        }
        echo ' </table></li>'."
    ";
    
        echo '<li style="list-style: none outside none;"><table border="0" class="db_table" >';
        echo '<tr class="head"> 
        <th style="180px">索引名称</th> 
        <th style="150px">索引字段</th> 
        <th>备注</th></tr>';
        foreach($arr_keys as $j=>$item){
            echo '    <tr class="'.($j%2==0?"odd":"even").'">'."
    ";
            echo '     <td>' . $item['Key_name'] . '</td>'."
    ";
            echo '     <td>' . $item['Column_name'] . '</td>'."
    ";
            echo '     <td>' . $item['Index_type'] . '</td>'."
    ";
            echo '    </tr>'."
    ";
        }
        echo ' </table></li>'."
    ";
        echo '</ul>'."
    ";
    
    }
    echo '</body>'."
    ";
    echo '</html>'."
    ";

    效果是这样的

    开源作品

    GO-FLY,一套可私有化部署的免费开源客服系统,安装过程不超过五分钟(超过你打我 !),基于Golang开发,二进制文件可直接使用无需搭开发环境,下载zip解压即可,仅依赖MySQL数据库,是一个开箱即用的网页在线客服系统,致力于帮助广大开发者/中小站长快速整合私有客服功能
    github地址:go-fly
    官网地址:https://gofly.sopans.com

    赞赏作者

    微信交流

  • 相关阅读:
    bzoj-2748 2748: [HAOI2012]音量调节(dp)
    bzoj-2338 2338: [HNOI2011]数矩形(计算几何)
    bzoj-3444 3444: 最后的晚餐(组合数学)
    codeforces 709E E. Centroids(树形dp)
    codeforces 709D D. Recover the String(构造)
    codeforces 709C C. Letters Cyclic Shift(贪心)
    codeforces 709B B. Checkpoints(水题)
    codeforces 709A A. Juicer(水题)
    Repeat Number
    hdu 1003 Max Sum (动态规划)
  • 原文地址:https://www.cnblogs.com/taoshihan/p/14951759.html
Copyright © 2011-2022 走看看