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
jq的get传参数在utf-8中乱码问题的解决php版
Jul 23 PHP
PHP类的静态(static)方法和静态(static)变量使用介绍
Feb 19 PHP
ThinkPHP验证码使用简明教程
Mar 05 PHP
PHP中使用glob函数实现一句话删除某个目录下的所有文件
Jul 22 PHP
VPS中使用LNMP安装WordPress教程
Dec 28 PHP
php显示指定目录下子目录的方法
Mar 20 PHP
php简单实现发送带附件的邮件
Jun 10 PHP
FastCGI 进程意外退出造成500错误
Jul 26 PHP
thinkphp验证码的实现(form、ajax实现验证)
Jul 28 PHP
Laravel的throttle中间件失效问题解决方法
Oct 09 PHP
ThinkPHP中类的构造函数_construct()与_initialize()的区别详解
Mar 13 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
调频问题解答
2021/03/01 无线电
多文件上载系统完整版
2006/10/09 PHP
通过对服务器端特性的配置加强php的安全
2006/10/09 PHP
php实现邮件发送并带有附件
2014/01/24 PHP
Laravel执行migrate命令提示:No such file or directory的解决方法
2016/03/16 PHP
PHP数组操作简单案例分析
2016/10/15 PHP
Laravel下生成验证码的类
2017/11/15 PHP
PHP-FPM和Nginx的通信机制详解
2019/02/01 PHP
用js实现trim()的解决办法
2013/04/16 Javascript
html、css和jquery相结合实现简单的进度条效果实例代码
2016/10/24 Javascript
zTree树形菜单交互选项卡效果的实现方法
2017/12/25 Javascript
详解如何在微信小程序中愉快地使用sass
2018/07/30 Javascript
jQuery轻量级表单模型验证插件
2018/10/15 jQuery
layui实现图片虚拟路径上传,预览和删除的例子
2019/09/25 Javascript
Vue 3.0双向绑定原理的实现方法
2019/10/23 Javascript
解决vant中 tab栏遇到的坑 van-tabs
2020/11/04 Javascript
python使用any判断一个对象是否为空的方法
2014/11/19 Python
django实现分页的方法
2015/05/26 Python
Python黑帽编程 3.4 跨越VLAN详解
2016/09/28 Python
Python计时相关操作详解【time,datetime】
2017/05/26 Python
Python rstrip()方法实例详解
2018/11/11 Python
Pandas 缺失数据处理的实现
2019/11/04 Python
简单了解Python读取大文件代码实例
2019/12/18 Python
Python object类中的特殊方法代码讲解
2020/03/06 Python
IntelliJ 中配置 Anaconda的过程图解
2020/06/01 Python
keras 自定义loss model.add_loss的使用详解
2020/06/22 Python
伦敦眼门票在线预订:London Eye
2018/05/31 全球购物
Nasty Gal英国:美国女性服饰销售网站
2021/03/02 全球购物
中文系师范生自荐信
2013/10/01 职场文书
教育科学研究生自荐信
2013/10/09 职场文书
买房子个人收入证明
2014/01/16 职场文书
关于奉献的演讲稿
2014/05/21 职场文书
高中历史教学反思
2016/02/19 职场文书
中学生打架检讨书之500字
2019/08/06 职场文书
react使用antd的上传组件实现文件表单一起提交功能(完整代码)
2021/06/29 Javascript
python数字图像处理数据类型及颜色空间转换
2022/06/28 Python