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图片验证码代码
Mar 27 PHP
PHP IDE phpstorm 常用快捷键
May 18 PHP
通过Email发送PHP错误的方法
Jul 20 PHP
100多行PHP代码实现socks5代理服务器[2]
May 05 PHP
详解PHP实现定时任务的五种方法
Jul 25 PHP
PHP入门教程之操作符与控制结构流程详解
Sep 09 PHP
AES加解密在php接口请求过程中的应用示例
Oct 26 PHP
PHP实现二维数组去重功能示例
Jan 12 PHP
php单元测试phpunit入门实例教程
Nov 17 PHP
Yii2框架redis基本应用示例
Jul 13 PHP
PHP 枚举类型的管理与设计知识点总结
Feb 13 PHP
PHP pthreads v3使用中的一些坑和注意点分析
Feb 21 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
使用Limit参数优化MySQL查询的方法
2008/11/12 PHP
仿Aspnetpager的一个PHP分页类代码 附源码下载
2012/10/08 PHP
php中静态类与静态变量用法的区别分析
2015/01/15 PHP
Laravel用户授权系统的使用方法示例
2018/09/16 PHP
如何在PHP中读写文件
2020/09/07 PHP
我也种棵OO树JXTree[js+css+xml]
2007/04/02 Javascript
HTML颜色选择器实现代码
2010/11/23 Javascript
基于JQuery制作的产品广告效果
2010/12/08 Javascript
一些常用的JavaScript函数(json)附详细说明
2011/05/25 Javascript
AngularJS在IE8的不支持的解决方法
2016/05/13 Javascript
jQuery使用正则表达式限制文本框只能输入数字
2016/06/18 Javascript
AngularJS入门教程之Cookies读写操作示例
2016/11/02 Javascript
浅析JS中的 map, filter, some, every, forEach, for in, for of 用法总结
2017/03/29 Javascript
VUE element-ui 写个复用Table组件的示例代码
2017/11/18 Javascript
Vue开发之封装上传文件组件与用法示例
2019/04/25 Javascript
浅谈一个webpack构建速度优化误区
2019/06/24 Javascript
在layui.use 中自定义 function 的正确方法
2019/09/16 Javascript
微信小程序实现限制用户转发功能的实例代码
2020/02/22 Javascript
浅谈JSON5解决了JSON的两大痛点
2020/12/14 Javascript
Python 字典dict使用介绍
2014/11/30 Python
pygame游戏之旅 添加游戏暂停功能
2018/11/21 Python
python的set处理二维数组转一维数组的方法示例
2019/05/31 Python
python协程gevent案例 爬取斗鱼图片过程解析
2019/08/27 Python
python函数map()和partial()的知识点总结
2020/05/26 Python
python3.7调试的实例方法
2020/07/21 Python
Python pickle模块常用方法代码实例
2020/10/10 Python
基于Modernizr 让网站进行优雅降级的分析
2013/04/21 HTML / CSS
html5 canvas fillRect坐标和大小的问题解决方法
2014/03/26 HTML / CSS
爱尔兰灯和灯具网上商店:Lights.ie
2018/03/26 全球购物
StubHub希腊:购买体育赛事、音乐会和剧院门票
2019/08/03 全球购物
机关节能减排实施方案
2014/03/17 职场文书
本科毕业生求职自荐信
2014/04/09 职场文书
新党员入党决心书
2015/09/22 职场文书
高中体育课教学反思
2016/02/16 职场文书
golang的文件创建及读写操作
2022/04/14 Golang
微软官方消息,在 2023 年 4 月 11 日之后微软将不再为 Office 2013 和 Skype for Business 2015 提供安全更新
2022/04/21 数码科技