数据库教程

mysql数据库数据字典生成代码

我的站长站 2021-10-28 人阅读

mysql字典生成代码

<?php
// -h host  -u user  -p password -P port -c charset -d dbname 
$param = getopt('h:u:p:P:c:d:');
$host = $param['h'] ?? '127.0.0.1';
$port = $param['P'] ?? 3306;
$user = $param['u'] ?? 'root';
$pass = $param['p'] ?? '123456';
$charset = $param['c'] ?? 'utf8';
$dbname = $param['d'] ?? '';
$dsn = "mysql:dbname={$dbname};host={$host};port={$port}";
try {
    $pdo = new PDO($dsn, $user, $pass, [PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'"]);
} catch (PDOException $e) {
    echo 'Connection failed:' . $e->getMessage();
}
//获取数据库中所有表信息
$sql = "SHOW TABLE STATUS FROM {$dbname}";
$result = $pdo->query($sql, PDO::FETCH_ASSOC);
$tables = $result->fetchAll();
$table_count = count($tables);
$html =  '<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>' . $dbname . '--数据字典</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;
    }
    .title{font-weight:bold;}
</style>
</head>
<body>
<div style="text-align:center;background:#D3DCE3;font-size:19px;">
    <b>' . $dbname . '--数据字典</b>
</div>
<div style="background:#f3f3f3;text-align:center;">(注:共' . $table_count . '张表,按ctrl+F查找关键字)</div>' . "n";
for ($i = 0; $i < $table_count; $i++) {
    $html .= '<ul type="square">' . "n";
    $html .= '  <li>';
    $html .= ($i + 1) . '、表名:[' . $tables[$i]['Name'] . ']      注释:' . $tables[$i]['Comment'];
    $html .= '</li>' . "n";
    //查询数据库表字段信息
    $tab_name = $tables[$i]['Name'];
    $sql_tab = 'SHOW FULL FIELDS FROM `' . $tables[$i]['Name'] . '`';
    $result = $pdo->query($sql_tab, PDO::FETCH_ASSOC);
    $field_info = $result->fetchAll();
    $html .= '<li style="list-style: none outside none;"><table border="0" >';
    $html .= '<tr>
        <th style="width:110px">字段</th>
        <th>类型</th>
        <th>为空</th>
        <th>额外</th>
        <th>默认</th>
        <th style="width:95px">字符集</th>
        <th>是否主键</th>
        <th>备注</th></tr>';
    for ($j = 0; $j < count($field_info); $j++) {
        $html .= '        <tr class="' . ($j % 2 == 0 ? "odd" : "even") . '">' . "n";
        $html .= '          <td>' . $field_info[$j]['Field'] . '</td>' . "n";
        $html .= '          <td>' . $field_info[$j]['Type'] . '</td>' . "n";
        $html .= '          <td>' . $field_info[$j]['Null'] . '</td>' . "n";
        $html .= '          <td>' . $field_info[$j]['Extra'] . '</td>' . "n";
        $html .= '          <td>' . $field_info[$j]['Default'] . '</td>' . "n";
        $html .= '          <td>' . $field_info[$j]['Collation'] . '</td>' . "n";
        $html .= '          <td>' . $field_info[$j]['Key'] . '</td>' . "n";
        $html .= '          <td>' . $field_info[$j]['Comment']. '</td>' . "n";
        $html .= '        </tr>' . "n";
    }
    $html .= '  </table></li>' . "n";
    $html .= '</ul>' . "n";
}
$html .= '</body>' . "n";
$html .= '</html>' . "n";
file_put_contents($dbname .'.html', $html);

使用方法

php dict.php -h 127.0.0.1 -u root -p 123456 -P 3306 -d blog_service

参数说明

-h mysql服务器地址 -u mysql用户名 -p mysql密码 -P mysql端口 -d mysql数据库名

参数都有默认值,-d参数必传 最简单的用法:

php dict.php -d blog_service

执行命令后生成一个以数据库名命名的html文件

相关推荐
  • mysql教程
  • 代码生成
  • mysql大数据分页查询性能优化

    使用limit start, count分页语句select * from product limit start, count当起始页较小时,查询没有性能问题,我们分别看下从10, 100, 1000, 10000开始分页的执行时间(每页取20条), 如下:select * from product limit 10, 20 0.016秒select * from product ...

    数据库教程 107 2年前
  • 6天掌握mysql基础视频教程
    6天掌握mysql基础视频教程

    6天掌握mysql基础视频教程,生动形象,浅显易懂,清晰明了,以最新MySQL8为起点,了解MySQL8下各大特性,对于有数据库学习需求的朋友十分适合。以mysql客户端作为操作平台,原生SQL提供解决方案,深入理解SQL编...

    视频教程 89 3年前
  • Windows服务器IIS+PHP+MySQL安装配置教程

    服务器配置软件下载PHP(5.1.2):http://www.php.netMySQL(5.0.19):http://www.mysql.comZend Optimizer(2.6.2):http://www.zend.comphpMyAdmin(2.8.0.2):http://www.phpmyadmin.net假设 C: 为你现在所使用操作系统的系统盘,如果你目前操作系统不是安装在 C: ,请自...

    php教程 145 4年前
  • neumorphism在线生成圆角阴影渐变CSS3代码工具
    neumorphism在线生成圆角阴影渐变CSS3代码工具

    源码介绍neumorphism是一款国外专业CSS3代码生成网站,中文叫新拟态,英文原名叫Neumorphism/Soft UI。一款助于设计人员和开发人员对其进行试验并可能对其进行调整的源码。neumorphism截图功能介绍...

    在线工具 87 1年前
  • 帝国CMS二次开发静态页面生成为压缩代码

    内容页面生成为压缩代码1、打开文件e/class/functions.php2、找到以下函数function GetHtml($classid,$id,$add,$ecms=0,$doall=0)3、在//写文件之前添加代码preg_match_all(&#39;/(.*?)<\/pre>/s&#39;,$string,$r);foreach ($r[0] as $key => $val...

    帝国cms教程 172 4年前
  • 自动生成sitemap地图php代码

    自动生成sitemap地图php代码,无需调用数据库,适用于百度站长提交。需要php的环境,本代码是通过php运行的。自动生成sitemap代码<?php$dom = new DOMDocument("1.0", "utf-8");header("Content-Type: text/xml");$root = $dom->createElement("urlset");...

    php教程 70 3年前
最新更新