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 相关文章推荐
WML,Apache,和 PHP 的介绍
Oct 09 PHP
文件系统基本操作类
Nov 23 PHP
source.php查看源文件
Dec 09 PHP
php Sql Server连接失败问题及解决办法
Aug 07 PHP
PHP 柱状图实现代码
Dec 04 PHP
php下关于中英数字混排的字符串分割问题
Apr 06 PHP
『PHP』PHP截断函数mb_substr()使用介绍
Apr 22 PHP
PHP如何通过传引用的思想实现无限分类(代码简单)
Oct 13 PHP
PHP实现图片上传并压缩
Dec 22 PHP
在laravel中使用Symfony的Crawler组件分析HTML
Jun 19 PHP
strpos() 函数判断字符串中是否包含某字符串的方法
Jan 16 PHP
Yii 实现数据加密和解密
Mar 09 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产生随机字符串函数
2006/12/06 PHP
在php MYSQL中插入当前时间
2008/04/06 PHP
深入理解ob_flush和flush的区别(ob_flush()与flush()使用方法)
2013/02/06 PHP
php实现往pdf中加数字签名操作示例【附源码下载】
2018/08/07 PHP
PHP cookie与session会话基本用法实例分析
2019/11/18 PHP
判断JavaScript对象是否可用的最正确方法分析
2008/10/03 Javascript
JQUERY 对象与DOM对象之两者相互间的转换
2009/04/27 Javascript
关于eval 与new Function 到底该选哪个?
2013/04/17 Javascript
jQuery回调函数的定义及用法实例
2014/12/23 Javascript
JavaScript使用pop方法移除数组最后一个元素用法实例
2015/04/06 Javascript
javascript实现炫酷的拖动分页
2015/05/11 Javascript
利用vue-router实现二级菜单内容转换
2016/11/30 Javascript
Vuex简单入门
2017/04/19 Javascript
详解angular ui-grid之过滤器设置
2017/06/07 Javascript
vue2.0 keep-alive最佳实践
2017/07/06 Javascript
JavaScript实现多叉树的递归遍历和非递归遍历算法操作示例
2018/02/08 Javascript
微信小程序文章详情页跳转案例详解
2019/07/09 Javascript
[53:23]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
教大家玩转Python字符串处理的七种技巧
2017/03/31 Python
详解Python函数可变参数定义及其参数传递方式
2017/08/02 Python
python爬虫获取多页天涯帖子
2018/02/23 Python
Python读取本地文件并解析网页元素的方法
2018/05/21 Python
Flask之flask-script模块使用
2018/07/26 Python
python使用Matplotlib绘制分段函数
2018/09/25 Python
python 从文件夹抽取图片另存的方法
2018/12/04 Python
使用Dajngo 通过代码添加xadmin用户和权限(组)
2020/07/03 Python
Windows下PyCharm配置Anaconda环境(超详细教程)
2020/07/31 Python
使用HTML5和CSS3制作一个模态框的示例
2018/03/07 HTML / CSS
详解webapp页面滚动卡顿的解决办法
2018/12/26 HTML / CSS
世界上最大的售后摩托车零配件超市:J&P Cycles
2017/12/08 全球购物
Jacadi Paris英国官网:法国童装品牌
2019/08/09 全球购物
歌颂祖国的演讲稿
2014/05/04 职场文书
设备售后服务承诺书
2014/05/30 职场文书
党支部四风整改方案
2014/10/25 职场文书
小学五年级(说明文3篇)
2019/08/13 职场文书
Python编程根据字典列表相同键的值进行合并
2021/10/05 Python