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实现文件上传二法
Oct 09 PHP
PHP编程网上资源导航
Oct 09 PHP
php实现的MySQL通用查询程序
Mar 11 PHP
PHP的分页功能
Mar 21 PHP
PHP网站备份程序代码分享
Jun 10 PHP
鸡肋的PHP单例模式应用详解
Jun 03 PHP
php跨域cookie共享使用方法
Feb 20 PHP
PHP针对常规模板引擎中与CSS/JSON冲突的解决方法
Aug 19 PHP
在CentOS上搭建LAMP+vsftpd环境的简单指南
Aug 01 PHP
php ajax实现文件上传进度条
Mar 29 PHP
彻底搞懂PHP 变量结构体
Oct 11 PHP
php模拟post提交请求调用接口示例解析
Aug 07 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表单提交问题的解决方法
2011/04/12 PHP
destoon实现VIP排名一直在前面排序的方法
2014/08/21 PHP
php关联数组与索引数组及其显示方法
2018/03/12 PHP
PHP实现基于状态的责任链审批模式详解
2019/05/31 PHP
Laravel Eloquent分表方法并使用模型关联的实现
2019/11/25 PHP
基于JavaScript自定义构造函数的详解说明
2013/04/24 Javascript
jQuery动画animate方法使用介绍
2013/05/06 Javascript
Ajax同步与异步传输的示例代码
2013/11/21 Javascript
JS图片等比例缩放方法完整示例
2016/08/03 Javascript
js实现网页定位导航功能
2017/03/07 Javascript
bootstrap IE8 兼容性处理
2017/03/22 Javascript
响应式框架Bootstrap栅格系统的实例
2017/12/19 Javascript
Router解决跨模块下的页面跳转示例
2018/01/11 Javascript
写gulp遇到的ES6问题详解
2018/12/03 Javascript
小程序云开发之用户注册登录
2019/05/18 Javascript
jquery分页优化操作实例分析
2019/08/23 jQuery
python将html转成PDF的实现代码(包含中文)
2013/03/04 Python
Django框架中方法的访问和查找
2015/07/15 Python
Python MySQL数据库连接池组件pymysqlpool详解
2017/07/07 Python
Python多继承原理与用法示例
2018/08/23 Python
详解配置Django的Celery异步之路踩坑
2018/11/25 Python
基于Python组装jmx并调用JMeter实现压力测试
2020/11/03 Python
python 实时调取摄像头的示例代码
2020/11/25 Python
Html5 postMessage实现跨域消息传递
2016/03/11 HTML / CSS
HTML5 Blob对象的具体使用
2020/05/22 HTML / CSS
办理暂住证介绍信
2014/01/11 职场文书
事业单位请假制度
2014/01/13 职场文书
优秀高中生事迹材料
2014/02/11 职场文书
小学校园之星事迹材料
2014/05/16 职场文书
社区党员公开承诺书
2014/08/30 职场文书
幼儿园教师个人总结
2015/02/05 职场文书
部门经理助理岗位职责
2015/04/13 职场文书
学术研讨会主持词
2015/07/04 职场文书
详解缓存穿透击穿雪崩解决方案
2021/05/28 Redis
Spring Data JPA使用JPQL与原生SQL进行查询的操作
2021/06/15 Java/Android
彻底卸载VMware虚拟机的超详细步骤记录
2022/07/15 Servers