前言
无论是刚接手新项目,或者是维护老项目,有一个方便的数据字典可用是最棒哒!
本文是我为了方便使用数据字典而写的代码。
代码无版权,随便使用。
拷贝代码后,只需修改数据库名,主机,用户名,密码,开箱即用。
同时,代码还可以保留自定义的数据字典部分,方便实用。
妈妈再也不用担心我没有好用的数据字典工具了!
源码
全部代码如下,只有一个文件,放在可访问的web目录下即可,附件里也有源码:
tool.php
效果展示:
无论是刚接手新项目,或者是维护老项目,有一个方便的数据字典可用是最棒哒!
本文是我为了方便使用数据字典而写的代码。
代码无版权,随便使用。
拷贝代码后,只需修改数据库名,主机,用户名,密码,开箱即用。
同时,代码还可以保留自定义的数据字典部分,方便实用。
妈妈再也不用担心我没有好用的数据字典工具了!
源码
全部代码如下,只有一个文件,放在可访问的web目录下即可,附件里也有源码:
tool.php
Php代码
- <?php
- classTool
- {
- //这是库名,需修改。第1处修改
- constdbname=‘mydb‘;
- private$mysqli;
- //$db是数据库连接,需修改使用。第2处修改。
- ////这里设置主机名,用户名,密码
- publicfunction__construct()
- {
- $this->mysqli=newmysqli(‘127.0.0.1‘,‘root‘,‘‘,self::dbname);
- $sql="setnamesutf8";
- $this->mysqli->query($sql);
- }
- /**
- *数据字典生成器
- *
- *可以从数据库中直接读出数据字典并直接呈现,只需配置好数据库连接。
- *还可以修改数据库中的内容(或添加上原来数据字典里没有的内容)。
- *
- *代码可以随意使用和修改。
- *
- *20171223
- *
- *@authoryyy
- */
- publicfunctiondb_dict()
- {
- $db_name=self::dbname;//这是数据库名
- //先查出表的元数据,和字段的元数据。
- $sql="
- selecttable_name,table_commentfrominformation_schema.tables
- wheretable_schema=‘{$db_name}‘
- orderbytable_nameasc
- ";
- $table_arr=$this->mysqli->query($sql)->fetch_all(MYSQLI_ASSOC);
- //var_dump($table_arr);return;
- $sql="
- SELECT
- T.TABLE_NAMEAS‘table_name‘,
- T.ENGINEAS‘engine‘,
- C.COLUMN_NAMEAS‘column_name‘,
- C.COLUMN_TYPEAS‘column_type‘,
- C.COLUMN_COMMENTAS‘column_comment‘
- FROM
- information_schema.COLUMNSC
- INNERJOINinformation_schema.TABLESTONC.TABLE_SCHEMA=T.TABLE_SCHEMA
- ANDC.TABLE_NAME=T.TABLE_NAME
- WHERE
- T.TABLE_SCHEMA=‘{$db_name}‘
- ";
- $column_arr=$this->mysqli->query($sql)->fetch_all(MYSQLI_ASSOC);
- $column_arr=$this->my_comment($column_arr);
- //构造表的索引
- $table_list_str=‘‘;
- foreach($table_arras$v){
- $table_list_str.=‘<li><ahref="#‘.$v[‘table_name‘].‘">‘.
- $v[‘table_name‘]."({$v[‘table_comment‘]})".‘</a></li>‘."\n";
- }
- //构造数据字典的内容
- $table_str=‘‘;
- foreach($table_arras$v){
- $table_name=$v[‘table_name‘];
- $table_comment=$v[‘table_comment‘];
- $table_str.=<<<html
- [url=#header][/url]
- <pclass=‘table_jiange‘><aname=‘{$table_name}‘> </a>
- <tablewidth="100%"border="0"cellspacing="0"cellpadding="3">
- <tr>
- <tdwidth="70%"
- valign="top">{$table_name}({$table_comment})</td>
- <tdwidth="30%"
- align="right"
- ></td>
- <tr>
- </table>
- <tablewidth="100%"cellspacing="0"cellapdding="2">
- <tr>
- <tdalign="center"width=‘15%‘valign="top">字段</td>
- <tdalign="center"width=‘15%‘valign="top">类型</td>
- <tdalign="center"width=‘70%‘valign="top">注释</td>
- </tr>
- html;
- foreach($column_arras$vv){
- if($vv[‘table_name‘]==$table_name){
- $table_str.=<<<html
- <tr>
- <tdwidth=‘15%‘>
- <tdwidth=‘15%‘><p>{$vv[‘column_type‘]}</td>
- <tdwidth=‘70%‘>{$vv[‘column_comment‘]}</td>
- </tr>
- html;
- }
- }
- $table_str.="</table>\n\n";
- }
- //开始构造整个数据字典的html页面
- $html=<<<html
- <html>
- <head>
- <title>{$db_name}数据字典</title>
- <metahttp-equiv="Content-Type"content="text/html;charset=utf8">
- <styletype="text/css">
- <!--
- .toptext{font-family:verdana;color:#000000;font-size:20px;font-weight:600;width:550;}
- .normal{font-family:Verdana,Arial,sans-serif;font-size:16px;font-weight:normal;color:#000000}
- .normal_ul{font-family:Verdana,Arial,sans-serif;
- font-size:12px;font-weight:normal;color:#000000}
- .fieldheader{font-family:verdana;color:#000000;font-size:16px;font-weight:600;width:550;}
- .fieldcolumn{font-family:verdana;color:#000000;font-size:16px;font-weight:600;width:550;}
- .header{#ECE9D8;}
- .headtext{font-family:verdana;color:#000000;font-size:20px;font-weight:600;}
- BR.page{page-break-after:always}
- //-->
- </style>
- <style>
- a:link{text-decoration:none;}
- a:visited{text-decoration:none;}
- a:active{text-decoration:none;}
- body{
- padding:20px;
- }
- #ul2{
- margin:0;
- padding:0;
- }
- #ul2li{
- display:inline;
- float:left;
- margin:55px;
- padding:0px0px;
- width:230px;
- border:1px#bbbdashed;
- }
- #ul2lia{
- display:block;
- font-size:14px;
- color:#000;
- padding:10px5px;
- font-weight:bolder;
- }
- #ul2li:hover{
- }
- #ul2li:hovera{
- color:#FFF;
- }
- #div2{
- clear:both;
- margin:20px;
- }
- .table2td{
- padding:5px10px;
- }
- .table2tr:hovertd{
- }
- .table2tr:hovertdp{
- color:#FFF;
- }
- .table2{border-right:1pxsolid#aaa;border-bottom:1pxsolid#aaa}
- .table2td{border-left:1pxsolid#aaa;border-top:1pxsolid#aaa}
- .table2tr:nth-child(even){background:#F4F4F4;}
- .headtext{
- padding:10px;
- }
- p.pa{
- color:blue;
- }
- .table_jiange{
- height:1px;
- margin:20px;
- padding:0;
- }
- </style>
- </head>
- <bodybgcolor=‘#ffffff‘topmargin="0">
- <tablewidth="100%"border="0"cellspacing="0"cellpadding="5">
- <tr>
- <td><palign="center">{$db_name}数据字典</td>
- </tr>
- </table>
- <aname="header"> </a>
- <ulid=‘ul2‘>
- {$table_list_str}
- </ul>
- <div></div>
- <brclass=page>
- {$table_str}
- [url=#header]<p>回到首页[/url]
- <h1width="100%">
- </body>
- </html>
- html;
- mysqli_close($this->mysqli);
- echo$html;
- }
- /**
- *自定义注释,可以完美覆盖表中的注释。
- *
- 这里的account表,id字段,只是示例,可以替换成你的表名和字段名。
- *@returnstring[][]
- */
- privatefunctionmy_comment_list()
- {
- $arr=[
- [
- ‘table_name‘=>‘account‘,
- ‘column_name‘=>‘id‘,
- ‘column_comment‘=>‘自增主键‘
- ],
- [
- ‘table_name‘=>‘account‘,
- ‘column_name‘=>‘cid‘,
- ‘column_comment‘=>‘栏目id‘
- ],
- ];
- return$arr;
- }
- privatefunctionmy_comment($arr)
- {
- $my_table=$this->my_comment_list();
- foreach($arras$k=>&$v){
- foreach($my_tableas$my){
- if($v[‘table_name‘]==$my[‘table_name‘]&&
- $v[‘column_name‘]==$my[‘column_name‘]){
- $v[‘column_comment‘]=$my[‘column_comment‘];
- }
- }
- }
- return$arr;
- }
- }
- $dict=newTool();
- $dict->db_dict();
效果展示:
- tool.zip(7.3 KB)
- 下载次数: 2
- 查看图片附件
实用的在线预览数据字典的工具(php编写)
原文地址:https://www.cnblogs.com/apolloren/p/9937410.html