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页面函数设置超时限制的方法
Dec 01 PHP
简单谈谈php中的unicode和utf8编码
Jun 10 PHP
php基本函数汇总
Jul 09 PHP
PHP设计模式之观察者模式实例
Feb 22 PHP
Symfony2实现从数据库获取数据的方法小结
Mar 18 PHP
PHP自定义函数实现格式化秒的方法
Sep 14 PHP
CI(CodeIgniter)框架实现图片上传的方法
Mar 24 PHP
php命令行写shell实例详解
Jul 19 PHP
PHP的PDO预处理语句与存储过程
Jan 27 PHP
PHP读取目录树的实现方法分析
Mar 22 PHP
mac pecl 安装php7.1扩展教程
Oct 17 PHP
搭建PhpStorm+PhpStudy开发环境的超详细教程
Sep 17 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
动漫女神老婆无限好,但日本女生可能就不是这么一回事了!
2020/03/04 日漫
给多个地址发邮件的类
2006/10/09 PHP
PHP+SQL 注入攻击的技术实现以及预防办法
2010/12/29 PHP
深入解析WordPress中加载模板的get_template_part函数
2016/01/11 PHP
jQuery Select(单选) 模拟插件 V1.3.62 改进版
2010/07/17 Javascript
基于jquery的获取浏览器窗口大小的代码
2011/03/28 Javascript
jQuery的控件及事件(输入控件及回车事件)使用示例
2013/07/25 Javascript
Extjs3.0 checkboxGroup 动态添加item实现思路
2013/08/14 Javascript
根据表格中的某一列进行排序的javascript代码
2013/11/29 Javascript
JS实现仿QQ效果的三级竖向菜单
2015/09/25 Javascript
jQuery弹层插件jquery.fancybox.js用法实例
2016/01/22 Javascript
xmlplus组件设计系列之网格(DataGrid)(10)
2017/05/05 Javascript
详解webpack进阶之插件篇
2017/07/06 Javascript
vue-router权限控制(简单方式)
2018/10/29 Javascript
[10:54]Team Spirit vs Navi
2018/06/07 DOTA
Python编程中运用闭包时所需要注意的一些地方
2015/05/02 Python
Python中基础的socket编程实战攻略
2016/06/01 Python
简单了解什么是神经网络
2017/12/23 Python
pandas DataFrame实现几列数据合并成为新的一列方法
2018/06/08 Python
python3.4控制用户输入与输出的方法
2018/10/17 Python
使用Python给头像戴上圣诞帽的图像操作过程解析
2019/09/20 Python
根据tensor的名字获取变量的值方式
2020/01/04 Python
django迁移文件migrations的实现
2020/03/31 Python
世界上最大的餐具公司:Oneida
2016/12/17 全球购物
澳洲最大的时尚奢侈品电商平台:Cettire
2020/06/15 全球购物
监理员的岗位职责
2013/11/13 职场文书
自我评价如何写好?
2014/01/05 职场文书
办加油卡单位介绍信
2014/01/09 职场文书
绿化先进工作者事迹材料
2014/01/30 职场文书
小学信息技术教学反思
2014/02/10 职场文书
2014国庆节商场促销活动策划方案
2014/09/16 职场文书
英文感谢信范文
2015/01/21 职场文书
埃及王子观后感
2015/06/16 职场文书
红与黑读书笔记
2015/06/29 职场文书
小学教师教育随笔
2015/08/14 职场文书
初中英语教学反思范文
2016/02/15 职场文书