本文实例讲述了PHP实现获取并生成数据库字典的方法。分享给大家供大家参考,具体如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
<?php /** * 生成mysql数据字典 */ header( "Content-type:text/html;charset=utf-8" ); // 配置数据库 $database = array (); $database [ 'DB_HOST' ] = 'localhost' ; $database [ 'DB_NAME' ] = 'test' ; $database [ 'DB_USER' ] = 'root' ; $database [ 'DB_PWD' ] = '' ; $mysql_conn = @mysql_connect( "{$database['DB_HOST']}" , "{$database['DB_USER']}" , "{$database['DB_PWD']}" ) or die ( "Mysql connect is error." ); mysql_select_db( $database [ 'DB_NAME' ], $mysql_conn ); $result = mysql_query( 'show tables' , $mysql_conn ); mysql_query( "set names utf8" ); // 取得所有表名 while ( $row = mysql_fetch_array( $result )) { $tables [][ 'TABLE_NAME' ] = $row [0]; } // 循环取得所有表的备注及表中列消息 foreach ( $tables as $k => $v ) { $sql = 'SELECT * FROM ' ; $sql .= 'information_schema.TABLES ' ; $sql .= 'WHERE ' ; $sql .= "table_name = '{$v['TABLE_NAME']}' AND table_schema = '{$database['DB_NAME']}'" ; $table_result = mysql_query( $sql , $mysql_conn ); while ( $t = mysql_fetch_array( $table_result )) { $tables [ $k ][ 'TABLE_COMMENT' ] = $t [ 'TABLE_COMMENT' ]; } $sql = 'SELECT * FROM ' ; $sql .= 'information_schema.COLUMNS ' ; $sql .= 'WHERE ' ; $sql .= "table_name = '{$v['TABLE_NAME']}' AND table_schema = '{$database['DB_NAME']}'" ; $fields = array (); $field_result = mysql_query( $sql , $mysql_conn ); while ( $t = mysql_fetch_array( $field_result )) { $fields [] = $t ; } $tables [ $k ][ 'COLUMN' ] = $fields ; } mysql_close( $mysql_conn ); $html = '' ; // 循环所有表 //print_r($tables); foreach ( $tables as $k => $v ) { $html .= '<table border="1" cellspacing="0" cellpadding="0" align="center">' ; $html .= '<caption>表名:' . $v [ 'TABLE_NAME' ] . ' ' . $v [ 'TABLE_COMMENT' ] . '</caption>' ; $html .= '<tbody><tr><th>字段名</th><th>数据类型</th><th>默认值</th><th>允许非空</th><th>自动递增</th><th>备注</th></tr>' ; $html .= '' ; foreach ( $v [ 'COLUMN' ] AS $f ) { $html .= '<td class="c1">' . $f [ 'COLUMN_NAME' ] . '</td>' ; $html .= '<td class="c2">' . $f [ 'COLUMN_TYPE' ] . '</td>' ; $html .= '<td class="c3">' . $f [ 'COLUMN_DEFAULT' ] . '</td>' ; $html .= '<td class="c4">' . $f [ 'IS_NULLABLE' ] . '</td>' ; $html .= '<td class="c5">' . ( $f [ 'EXTRA' ] == 'auto_increment' ? '是' : ' ' ) . '</td>' ; $html .= '<td class="c6">' . $f [ 'COLUMN_COMMENT' ] . '</td>' ; $html .= '</tr>' ; } $html .= '</tbody></table></p>' ; } /* 生成word */ //header ( "Content-type:application/vnd.ms-word" ); //header ( "Content-Disposition:attachment;filename={$database['DB_NAME']}数据字典.doc" ); /* 生成excel*/ //header ( "Content-type:application/vnd.ms-excel" ); //header ( "Content-Disposition:attachment;filename={$database['DB_NAME']}数据字典.xls" ); // 输出 echo '<html> <meta charset= "utf-8" > <title>自动生成数据字典</title> <style> body,td,th {font-family: "宋体" ; font-size:12px;} table,h1,p{width:960px;margin:0px auto;} table{border-collapse:collapse;border:1px solid #CCC;background:#efefef;} table caption{text-align:left; background-color:#fff; line-height:2em; font-size:14px; font-weight:bold; } table th{text-align:left; font-weight:bold;height:26px; line-height:26px; font-size:12px; border:1px solid #CCC;padding-left:5px;} table td{height:20px; font-size:12px; border:1px solid #CCC;background-color:#fff;padding-left:5px;} .c1{ width: 150px;} .c2{ width: 150px;} .c3{ width: 80px;} .c4{ width: 100px;} .c5{ width: 100px;} .c6{ width: 300px;} </style> <body>'; echo '<h1 style="text-align:center;">' . $database [ 'DB_NAME' ]. '数据字典</h1>' ; echo '<p style="text-align:center;margin:20px auto;">生成时间:' . date ( 'Y-m-d H:i:s' ) . '</p>' ; echo $html ; echo '<p style="text-align:left;margin:20px auto;">总共:' . count ( $tables ) . '个数据表</p>' ; echo '</body></html>' ; ?> |
希望本文所述对大家PHP程序设计有所帮助。