愿每一次的分享,都将值得期待

今日推荐:挨踢小子

前些天写过这么一篇文章: ,文中有写到自己写了一份PHP版本的数据字典 ,其实主要得益于我的师傅,为我提供了这个idea,此前并没有想过要这样做,后来觉得这个对提高工作效率等方面,也是特别有益的,因此稍加改善。源码如下。

环境:php运行环境

对象:MySQL

字典界面展示图:

图中左侧部分属于菜单区域:

左侧罗列了当前数据库中所有的数据表。优先显示表注释,如果表注释为空则显示表名称。所以建议大家在建表之初能加上中文注释,毕竟业界英语好的程序猿毕竟是少数。方便了解表的具体含义。

图中右侧部分属于信息展示:

右侧部分一目了然,显示当前数据表中所有字段名,数据类型,字段类型长度,默认值,以及其备注信息。

配置截图:

在源码中,找到图示部分,按注释自行操作即可

<style>* { margin: 0px; padding: 0px; font-size: 14px;}.boxtab { width: 1100px; margin: 0px auto;}.tab { border: 1px solid #C1DAD7; border-collapse: collapse;}.tab { width: 100%;}h3 { line-height: 50px; text-align: center; font-size: 30px;}h2 { line-height: 50px; text-align: center; font-size: 20px;}.tab th { background: #d6eef0; padding: 5px;}.tab tr td { border: 1px solid #C1DAD7; border-collapse: collapse; line-height: 30px;}.zilist { position: fixed; left: 10px; background: #fff; border: 1px solid #c8c8c8; padding: 8px; width: 202px;}.zilist a { display: block; line-height: 35px; font-size: 14px; color: #333; text-decoration: none; float: left; width: 100px; height: 35px; overflow: hidden; text-align: center; border-bottom: 1px solid #c8c8c8;}.zilist a:hover { background: #f8f8f8;}.zilist a:nth-child(odd) { border-right: 1px solid #c8c8c8;}td { padding: 3px 5px 3px 10px; vertical-align: top;}.tab tr:nth-child(odd) { background: #f8f8f8;}.tab tr:hover { background: #E8E8E8;}.cor { line-height: 30px; text-align: center; color: #; background: rgba(220,229,239,0.9);}</style>

<?php /** * @project: 挨踢小子数据字典详细说明 * @desc: 该文件应该放置于php运行环境之下,并配置下面的数据库。在建表过程中需要注意数据表注释,数据字段注释 * @author: Aiti * @email: * @time: 2018年10月15日上午9:31:12 */ date_default_timezone_set("PRC");$mysql_conf = array( 'host' => '127.0.0.1', //数据库的链接IP地址 'db' => 'information_schema', //数据库名称 'db_user' => 'root',//登录用户名 'db_pwd' => 'root',//登录密码); $mysqli = @new mysqli($mysql_conf['host'], $mysql_conf['db_user'], $mysql_conf['db_pwd']);if ($mysqli->connect_errno) { die("could not connect to the database:\n" . $mysqli->connect_error);//诊断连接错误}$mysqli->query("set names 'utf8';");//编码转化$select_db = $mysqli->select_db($mysql_conf['db']);if (!$select_db) { die("could not connect to the db:\n" . $mysqli->error);}//获取该数据库下面所有的表和表注释$tablesql="Select table_name table_name,TABLE_COMMENT table_annotation from INFORMATION_SCHEMA.TABLES Where table_schema = '".$mysql_conf['db']."'";$tableresone = $mysqli->query($tablesql);$tablerestwo = $mysqli->query($tablesql);echo "<ul class='zilist'>";$newstr=''; while ($tablerow =$tableresone->fetch_assoc()) {if(empty($tablerow['table_annotation'])){ $newstr.="<a href='#tab".$tablerow['table_name']."'>".$tablerow['table_name']."</a>"; }else{ $newstr.="<a href='#tab".$tablerow['table_name']."'>".$tablerow['table_annotation']."</a>"; } } echo $newstr."</ul>";while ($tablerow =$tablerestwo->fetch_assoc()) {//    遍历数据库中的表名组装语句 $infosql = "SELECT  `COLUMN_NAME`, `COLUMN_TYPE`, `DATA_TYPE`,  `CHARACTER_MAXIMUM_LENGTH`,                  `IS_NULLABLE`,`COLUMN_DEFAULT`,`COLUMN_COMMENT` FROM  INFORMATION_SCHEMA.COLUMNS              where  table_schema ='".$mysql_conf['db']."' AND  table_name  ='{$tablerow['table_name']}'";$infores = $mysqli->query($infosql); if (!$infores) { die("sql error:\n" . $mysqli->error); } echo '<h2 id="tab'.$tablerow['table_name'].'">'.$tablerow['table_name']." ".$tablerow['table_annotation']."</h2>"; echo "<table class='tab'>"; echo "</caption> <tr> ‍                <th>字段名</th>                <th>数据类型</th>                <th>字段类型</th>                <th>长度</th>                <th>是否为空</th>                <th>默认值</th>                <th>备注</th></tr>"‍; while ($inforow = $infores->fetch_assoc()) { //  遍历输出表中的各项字段的信息 echo "<tr>                 <td>".$inforow['COLUMN_NAME']."</td>                                   <td>".$inforow['COLUMN_TYPE']."</td>                 <td>".$inforow['DATA_TYPE']."</td>                                   <td>".$inforow['CHARACTER_MAXIMUM_LENGTH']."</td>                                   <td>".$inforow['IS_NULLABLE']."</td>                                   <td>".$inforow['COLUMN_DEFAULT']."</td>                                   <td>" .$inforow['COLUMN_COMMENT']."</td>                          </tr>"; } echo "</table>"; echo "<br>"; $infores->free();}$tableresone->free();$tablerestwo->free();$mysqli->close();?>作者:挨踢小子

来源:CSDN

版权声明:本文为博主原创文章,转载请附上博文链接!

关注本公号,回复文件口令:aitisql

即可获取文件源码

关注【挨踢小子】,让我们一起成长

适合分享 | 值得留言