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的FTP学习(一)
Oct 09 PHP
php下过滤html代码的函数 提高程序安全性
Mar 02 PHP
php数据库连接时容易出错的特殊符号问题
Sep 01 PHP
浅析php工厂模式
Nov 25 PHP
PHP限制HTML内容中图片必须是本站的方法
Jun 16 PHP
php抽象类用法实例分析
Jul 07 PHP
PHP Smarty模版简单使用方法
Mar 30 PHP
PHP实现清除MySQL死连接的方法
Jul 23 PHP
php版微信公众平台接口参数调试实现判断用户行为的方法
Sep 23 PHP
PHP7标量类型declare用法实例分析
Sep 26 PHP
Laravel框架Blade模板简介及模板继承用法分析
Dec 03 PHP
KindEditor在php环境下上传图片功能集成的方法示例
Jul 20 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/10/09 PHP
用PHP动态生成虚拟现实VRML网页
2006/10/09 PHP
PHP中的integer类型使用分析
2010/07/27 PHP
Laravel学习教程之从入口到输出过程详解
2017/08/27 PHP
PHP获取日期对应星期、一周日期、星期开始与结束日期的方法
2018/06/22 PHP
什么是JavaScript
2009/08/13 Javascript
JavaScript 拾漏补遗
2009/12/27 Javascript
细说javascript函数从函数的构成开始
2013/08/29 Javascript
使用js dom和jquery分别实现简单增删改
2014/09/11 Javascript
谈谈我对JavaScript DOM事件的理解
2015/12/18 Javascript
高性能JavaScript循环语句和条件语句
2016/01/20 Javascript
canvas时钟效果
2017/02/16 Javascript
利用n工具轻松管理Node.js的版本
2017/04/21 Javascript
使用JavaScript开发跨平台的桌面应用详解
2017/07/27 Javascript
Angular.js通过自定义指令directive实现滑块滑动效果
2017/10/13 Javascript
360提示[高危]使用存在漏洞的JQuery版本的解决方法
2017/10/27 jQuery
js删除对象/数组中null、undefined、空对象及空数组方法示例
2018/11/14 Javascript
产制造追溯系统之通过微信小程序实现移动端报表平台
2019/06/03 Javascript
深入学习TypeScript 、React、 Redux和Ant-Design的最佳实践
2019/06/17 Javascript
javascript定时器的简单应用示例【控制方块移动】
2019/06/17 Javascript
Python压缩和解压缩zip文件
2015/02/14 Python
Python实现的插入排序算法原理与用法实例分析
2017/11/22 Python
python使用os.listdir和os.walk获得文件的路径的方法
2017/12/16 Python
Python实现的计算马氏距离算法示例
2018/04/03 Python
浅析Python 读取图像文件的性能对比
2019/03/07 Python
HTML5 新事件 小结
2009/07/16 HTML / CSS
北京鼎普科技股份有限公司软件测试面试题
2012/04/07 面试题
文秘专业毕业生就业推荐信
2013/11/08 职场文书
中专生自我鉴定书范文
2013/12/28 职场文书
超级搞笑检讨书
2014/01/15 职场文书
电大毕业生自我鉴定
2014/04/10 职场文书
国旗下的讲话演讲稿
2014/05/08 职场文书
教师听课评语大全
2014/12/31 职场文书
撤诉状格式范本
2015/05/19 职场文书
数据库之SQL技巧整理案例
2021/07/07 SQL Server
详解CSS中postion和opacity及cursor的特性
2022/08/14 HTML / CSS