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应用提速面面观
Oct 09 PHP
随时给自己贴的图片加文字的php代码
Mar 08 PHP
逐步提升php框架的性能
Jan 10 PHP
PHP OPCode缓存 APC详细介绍
Oct 12 PHP
解决PHP在DOS命令行下却无法链接MySQL的技术笔记
Dec 29 PHP
新手学习PHP的一些基础知识分享
Jul 27 PHP
php中禁止单个IP与ip段访问的代码小结
Jul 04 PHP
php中AES加密解密的例子小结
Feb 18 PHP
PHP+Ajax异步带进度条上传文件实例
Nov 01 PHP
php+mysql+jquery实现简易的检索自动补全提示功能
Apr 15 PHP
微信推送功能实现方式图文详解
Jul 12 PHP
php 原生分页
Apr 01 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日期时间函数的高级应用技巧
2009/05/16 PHP
Yii框架的路由配置方法分析
2019/09/09 PHP
兼容FF和IE的动态table示例自写
2013/10/21 Javascript
js控制再次点击按钮之间的间隔时间可防止重复提交
2014/08/01 Javascript
jQuery+ajax实现文章点赞功能的方法
2015/12/31 Javascript
微信开发之调起摄像头、本地展示图片、上传下载图片实例
2016/12/08 Javascript
基于VUE选择上传图片并页面显示(图片可删除)
2017/05/25 Javascript
AngularJS表单验证功能分析
2017/05/26 Javascript
Async Validator 异步验证使用说明
2017/07/03 Javascript
JS实现unicode和UTF-8之间的互相转换互转
2017/07/05 Javascript
JavaScript模板引擎应用场景及实现原理详解
2018/12/14 Javascript
Vue.js实现的购物车功能详解
2019/01/27 Javascript
Node.js HTTP服务器中的文件、图片上传的方法
2019/09/23 Javascript
vue登录以及权限验证相关的实现
2019/10/25 Javascript
npm qs模块使用详解
2020/02/07 Javascript
Vue.js仿Select下拉框效果
2020/02/18 Javascript
koa2的中间件功能及应用示例
2020/03/05 Javascript
JavaScript常用工具函数大全
2020/05/06 Javascript
[04:26]2014DOTA2西雅图国际邀请赛 总决赛TOPPLAY
2014/07/22 DOTA
Python实现的最近最少使用算法
2015/07/10 Python
Python+Pika+RabbitMQ环境部署及实现工作队列的实例教程
2016/06/29 Python
Python递归函数定义与用法示例
2017/06/02 Python
Python计算斗牛游戏概率算法实例分析
2017/09/26 Python
Django添加KindEditor富文本编辑器的使用
2018/10/24 Python
解决python3 pika之连接断开的问题
2018/12/18 Python
如何解决django-celery启动后迅速关闭
2019/10/16 Python
python实现数据清洗(缺失值与异常值处理)
2019/12/02 Python
Harrods美国:英国最大的百货公司
2018/11/04 全球购物
联想英国官网:Lenovo英国
2019/07/17 全球购物
运动会广播稿500字
2014/01/28 职场文书
保护环境的建议书
2014/03/12 职场文书
2014春晚主持词
2014/03/25 职场文书
学生安全承诺书
2014/05/22 职场文书
农村党支部承诺书
2015/04/30 职场文书
同事离别感言
2015/08/04 职场文书
Redis 常见使用场景
2021/08/30 Redis