PHP实现获取并生成数据库字典的方法


Posted in PHP onMay 04, 2016

本文实例讲述了PHP实现获取并生成数据库字典的方法。分享给大家供大家参考,具体如下:

PHP实现获取并生成数据库字典的方法

<?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程序设计有所帮助。

PHP 相关文章推荐
让的PHP代码飞起来的40条小技巧(提升php效率)
Apr 12 PHP
PHP中的array数组类型分析说明
Jul 27 PHP
分享下页面关键字抓取www.icbase.com站点代码(带asp.net参数的)
Jan 30 PHP
实现PHP+Mysql无限分类的方法汇总
Mar 02 PHP
PHP魔术方法的使用示例
Jun 23 PHP
PHP读取PPT文件的方法
Dec 10 PHP
php抽奖概率算法(刮刮卡,大转盘)
Apr 17 PHP
PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)
Sep 11 PHP
ThinkPHP5框架缓存查询操作分析
May 30 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
Jun 13 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
Apr 02 PHP
Thinkphp 框架扩展之类库扩展操作详解
Apr 23 PHP
PHP创建/删除/复制文件夹、文件
May 03 #PHP
Yii2使用swiftmailer发送邮件的方法
May 03 #PHP
php读取torrent种子文件内容的方法(测试可用)
May 03 #PHP
Yii2 输出xml格式数据的方法
May 03 #PHP
php面向对象值单例模式
May 03 #PHP
php使用ffmpeg获取视频信息并截图的实现方法
May 03 #PHP
Linux环境下php实现给网站截图的方法
May 03 #PHP
You might like
php通用防注入程序 推荐
2011/02/26 PHP
Laravel学习教程之request validation的编写
2017/10/25 PHP
Aster vs Newbee BO3 第二场2.18
2021/03/10 DOTA
jQuery学习笔记[1] jQuery中的DOM操作
2010/12/03 Javascript
浅谈Javascript事件模拟
2012/06/27 Javascript
简单的js图片轮换代码(js图片轮播)
2014/05/06 Javascript
jQuery实现复选框成对选择及对应取消的方法
2015/03/03 Javascript
易操作的jQuery表单提示插件
2015/12/01 Javascript
浅谈jQuery为哪般去掉了浏览器检测
2016/08/29 Javascript
jquery Banner轮播选项卡
2016/12/26 Javascript
微信小程序 navbar实例详解
2017/05/11 Javascript
vue中引用阿里字体图标的方法
2018/02/10 Javascript
Javascript实现异步编程的过程
2018/06/18 Javascript
基于vue和bootstrap实现简单留言板功能
2020/05/30 Javascript
教你安装python Django(图文)
2013/11/04 Python
本地文件上传到七牛云服务器示例(七牛云存储)
2014/01/11 Python
python打开url并按指定块读取网页内容的方法
2015/04/29 Python
用python实现百度翻译的示例代码
2018/03/09 Python
解决每次打开pycharm直接进入项目的问题
2018/10/28 Python
python 为什么说eval要慎用
2019/03/26 Python
Python和Java的语法对比分析语法简洁上python的确完美胜出
2019/05/10 Python
Python批量生成幻影坦克图片实例代码
2019/06/04 Python
python 实现交换两个列表元素的位置示例
2019/06/26 Python
PyQt5实现暗黑风格的计时器
2019/07/29 Python
python生成特定分布数的实例
2019/12/05 Python
python中68个内置函数的总结与介绍
2020/02/24 Python
基于django 的orm中非主键自增的实现方式
2020/05/18 Python
python实现录制全屏和选择区域录屏功能
2021/02/05 Python
骨干教师培训感言
2014/01/16 职场文书
社区庆八一活动方案
2014/02/02 职场文书
学习决心书范文
2014/03/11 职场文书
爱国主义教育活动总结
2014/05/07 职场文书
老干部工作先进集体事迹材料
2014/05/21 职场文书
村主任当选感言
2015/08/01 职场文书
高一数学教学反思
2016/02/18 职场文书
《少年闰土》教学反思
2016/02/18 职场文书