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 相关文章推荐
PHP4和PHP5性能测试和对比 测试代码与环境
Aug 17 PHP
Dedecms常用函数解析
Feb 01 PHP
Ajax PHP 边学边练 之三 数据库
Nov 26 PHP
php 的加密函数 md5,crypt,base64_encode 等使用介绍
Apr 09 PHP
php中的ini配置原理详解
Oct 14 PHP
php字符串截取函数用法分析
Nov 25 PHP
PHP使用flock实现文件加锁的方法
Jul 01 PHP
谈谈PHP中substr和substring的正确用法及相关参数的介绍
Dec 16 PHP
thinkPHP分组后模板无法加载问题解决方法
Jul 12 PHP
PHP 年月日的三级联动实例代码
May 24 PHP
PHP新特性之字节码缓存和内置服务器
Aug 11 PHP
PHP实现图的邻接矩阵表示及几种简单遍历算法分析
Nov 24 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 3行代码的分页算法(求起始页和结束页)
2009/10/21 PHP
PHP按行读取文件时删除换行符的3种方法
2014/05/04 PHP
PHP登录环节防止sql注入的方法浅析
2014/06/30 PHP
PHP文件缓存类示例分享
2015/01/30 PHP
Lazy Load 延迟加载图片的 jQuery 插件
2010/02/06 Javascript
拉动滚动条加载数据的jquery代码
2012/05/03 Javascript
cookie在javascript中的使用技巧以及隐私在服务器端的设置
2012/12/03 Javascript
js猜数字小游戏的简单实现代码
2013/07/02 Javascript
Javascript 命名空间模式
2013/11/01 Javascript
Jquery实现点击按钮,连续地向textarea中添加值的实例代码
2014/03/08 Javascript
原生javascript实现的分页插件pagenav
2014/08/28 Javascript
使用jspdf生成pdf报表
2015/07/03 Javascript
原生js配合cookie制作保存路径的拖拽
2015/12/29 Javascript
JavaScript 数组的深度复制解析
2016/11/02 Javascript
微信小程序 网络请求(post请求,get请求)
2017/01/17 Javascript
从零开始学习Node.js系列教程之设置HTTP头的方法示例
2017/04/13 Javascript
vue-cli webpack配置文件分析
2019/05/20 Javascript
jQuery+css实现的点击图片放大缩小预览功能示例【图片预览 查看大图】
2020/05/29 jQuery
Vue+Java 通过websocket实现服务器与客户端双向通信操作
2020/09/22 Javascript
Python升级导致yum、pip报错的解决方法
2017/09/06 Python
司机的工作范围及职责
2013/11/13 职场文书
适用于所有创业者的创业计划书
2014/02/05 职场文书
小学音乐教学反思
2014/02/05 职场文书
挂职学习心得体会
2014/09/09 职场文书
献爱心大型公益活动策划方案
2014/09/15 职场文书
行政执法队伍作风整顿个人剖析材料
2014/10/11 职场文书
2014年德育工作总结
2014/11/20 职场文书
冰峪沟导游词
2015/02/09 职场文书
护林员个人总结
2015/03/04 职场文书
护士2015年终工作总结
2015/04/29 职场文书
小学同学聚会感言
2015/07/30 职场文书
导游词之阆中古城
2019/12/23 职场文书
Oracle笔记
2021/04/05 Oracle
实现一个简单得数据响应系统
2021/11/11 Javascript
Python中的程序流程控制语句
2022/02/24 Python
python数字图像处理之对比度与亮度调整示例
2022/06/28 Python