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加速的eAccelerator dll支持文件打包下载
Sep 30 PHP
php minixml详解
Jul 19 PHP
php.ini 配置文件的深入解析
Jun 17 PHP
CodeIgniter实现从网站抓取图片并自动下载到文件夹里的方法
Jun 17 PHP
PHP之预定义接口详解
Jul 29 PHP
php获取网站百度快照日期的方法
Jul 29 PHP
PHP实现导出excel数据的类库用法示例
Oct 15 PHP
CI框架(ajax分页,全选,反选,不选,批量删除)完整代码详解
Nov 01 PHP
PHP回调函数与匿名函数实例详解
Aug 16 PHP
PHP之认识(二)关于Traits的用法详解
Apr 11 PHP
Laravel框架处理用户的请求操作详解
Dec 20 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
Apr 04 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 array_intersect比array_diff快(附详细的使用说明)
2011/07/03 PHP
Yii2中使用join、joinwith多表关联查询
2016/06/30 PHP
PHP面向对象之领域模型+数据映射器实例(分析)
2017/06/21 PHP
在JavaScript中实现命名空间
2006/11/23 Javascript
js模拟弹出效果代码修正版
2008/08/07 Javascript
js中关于String对象的replace使用详解
2011/05/24 Javascript
DIV外区域Click后关闭DIV的实现代码
2011/12/21 Javascript
js怎么终止程序return不行换jfslk
2013/05/30 Javascript
JavaScript中的关联数组问题
2015/03/04 Javascript
jQuery设置和移除文本框默认值的方法
2015/03/09 Javascript
jquery实现标题字体变换的滑动门菜单效果
2015/09/07 Javascript
js验证身份证号有效性并提示对应信息
2015/10/19 Javascript
js HTML5上传示例代码完整版
2016/10/10 Javascript
JavaScript cookie详解及简单实例应用
2016/12/31 Javascript
javascript+html5+css3自定义弹出窗口效果
2017/10/26 Javascript
Vue数据双向绑定原理及简单实现方法
2018/05/18 Javascript
json前后端数据交互相关代码
2018/09/19 Javascript
浅谈js中的attributes和Attribute的用法与区别
2020/07/16 Javascript
Python利用多进程将大量数据放入有限内存的教程
2015/04/01 Python
详解python基础之while循环及if判断
2017/08/24 Python
python 用正则表达式筛选文本信息的实例
2018/06/05 Python
Python3实现爬取简书首页文章标题和文章链接的方法【测试可用】
2018/12/11 Python
PyQt5固定窗口大小的方法
2019/06/18 Python
Django中使用CORS实现跨域请求过程解析
2019/08/05 Python
python输出pdf文档的实例
2020/02/13 Python
Python爬取新型冠状病毒“谣言”新闻进行数据分析
2020/02/16 Python
Python响应对象text属性乱码解决方案
2020/03/31 Python
Numpy一维线性插值函数的用法
2020/04/22 Python
外科实习自我鉴定
2013/10/06 职场文书
数控专业应届生求职信
2013/11/27 职场文书
大学生表扬信范文
2014/01/09 职场文书
精彩自我鉴定
2014/01/16 职场文书
HTML+css盒子模型案例(圆,半圆等)“border-radius” 简单易上手
2021/05/10 HTML / CSS
springcloud之Feign超时问题的解决
2021/06/24 Java/Android
Redis三种集群模式详解
2021/10/05 Redis
MySQL数据库中的锁、解锁以及删除事务
2022/05/06 MySQL