预览mysql的数据字典_实用的在线预览数据字典的工具(php编写)

class Tool

{

// 这是库名,需修改。第1处修改

const dbname='mydb';

private $mysqli;

// $db 是数据库连接,需修改使用。第2处修改。

// // 这里设置主机名,用户名,密码

public function __construct()

{

$this->mysqli = new mysqli('127.0.0.1', 'root', '', self::dbname);

$sql="set names utf8";

$this->mysqli->query($sql);

}

/**

* 数据字典生成器

*

* 可以从数据库中直接读出数据字典并直接呈现,只需配置好数据库连接。

* 还可以修改数据库中的内容(或添加上原来数据字典里没有的内容)。

*

* 代码可以随意使用和修改。

*

* 2017 12 23

*

* @author yyy

*/

public function db_dict ( )

{

$db_name = self::dbname; // 这是数据库名

// 先查出表的元数据,和字段的元数据。

$sql = "

select table_name,table_comment from information_schema.tables

where table_schema='{$db_name}'

order by table_name asc

";

$table_arr = $this->mysqli->query($sql)->fetch_all(MYSQLI_ASSOC);

// var_dump($table_arr);return;

$sql = "

SELECT

T.TABLE_NAME AS 'table_name',

T. ENGINE AS 'engine',

C.COLUMN_NAME AS 'column_name',

C.COLUMN_TYPE AS 'column_type',

C.COLUMN_COMMENT AS 'column_comment'

FROM

information_schema.COLUMNS C

INNER JOIN information_schema.TABLES T ON C.TABLE_SCHEMA = T.TABLE_SCHEMA

AND C.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_arr as $v) {

$table_list_str .= '

' .

$v['table_name'] . "({$v['table_comment']})" . '

' . "\n";

}

// 构造数据字典的内容

$table_str = '';

foreach ($table_arr as $v) {

$table_name = $v['table_name'];

$table_comment = $v['table_comment'];

$table_str .= <<

[url=#header][/url]

&nbsp

align="left" valign="top"> {$table_name}({$table_comment})

align="right"

字段类型注释

html;

foreach ($column_arr as $vv) {

if ($vv['table_name'] == $table_name) {

$table_str .= <<

{$vv['column_type']}

{$vv['column_comment']}

html;

}

}

$table_str .= "

\n\n";

}

// 开始构造整个数据字典的html页面

$html = <<

{$db_name}数据字典

a:link{text-decoration:none;}

a:visited{text-decoration:none;}

a:active{text-decoration:none;}

body {

padding:20px;

}

#ul2 {

margin:0;

padding:0;

}

#ul2 li {

display:inline;

float:left;

margin:5 5px;

padding:0px 0px;

width:230px;

border:1px #bbb dashed;

}

#ul2 li a{

display:block;

font-size:14px;

color:#000;

padding:10px 5px;

font-weight:bolder;

}

#ul2 li:hover {

}

#ul2 li:hover a {

color:#FFF;

}

#div2 {

clear:both;

margin:20px;

}

.table2 td {

padding:5px 10px;

}

.table2 tr:hover td {

}

.table2 tr:hover td p{

color:#FFF;

}

.table2 {border-right:1px solid #aaa; border-bottom:1px solid #aaa}

.table2  td{border-left:1px solid #aaa; border-top:1px solid #aaa}

.table2 tr:nth-child(even){background:#F4F4F4;}

.headtext {

padding:10px;

}

p.pa{

color:blue;

}

.table_jiange{

height:1px;

margin:20px;

padding:0;

}

{$db_name}数据字典

&nbsp

{$table_list_str}

{$table_str}

[url=#header]

回到首页[/url]

html;

mysqli_close($this->mysqli);

echo $html;

}

/**

* 自定义注释,可以完美覆盖表中的注释。

*

这里的account 表,id字段,只是示例,可以替换成你的表名和字段名。

* @return string[][]

*/

private function my_comment_list ( )

{

$arr = [

[

'table_name' => 'account',

'column_name' => 'id',

'column_comment' => '自增主键'

],

[

'table_name' => 'account',

'column_name' => 'cid',

'column_comment' => '栏目id'

],

];

return $arr;

}

private function my_comment ( $arr )

{

$my_table = $this->my_comment_list( );

foreach ($arr as $k => &$v) {

foreach ($my_table as $my) {

if ($v['table_name'] == $my['table_name'] &&

$v['column_name'] == $my['column_name']) {

$v['column_comment'] = $my['column_comment'];

}

}

}

return $arr;

}

}

$dict = new Tool();

$dict->db_dict();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值