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 相关文章推荐
smtp邮件发送一例
Oct 09 PHP
PHPMailer 中文使用说明小结
Jan 22 PHP
php面向对象 字段的声明与使用
Jun 14 PHP
PHP获取和操作配置文件php.ini的几个函数介绍
Jun 24 PHP
php漏洞之跨网站请求伪造与防止伪造方法
Aug 15 PHP
ThinkPHP Mobile使用方法简明教程
Jun 18 PHP
php调用新浪短链接API的方法
Nov 08 PHP
PHP判断上传文件类型的解决办法
Oct 20 PHP
不常用但很实用的PHP预定义变量分析
Jun 25 PHP
php实现获取近几日、月时间示例
Jul 06 PHP
php设计模式之抽象工厂模式分析【星际争霸游戏案例】
Jan 23 PHP
PHP的垃圾回收机制代码实例讲解
Feb 27 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
为什么《星际争霸》是测试人工智能的理想战场
2019/12/03 星际争霸
PHP+AJAX实现无刷新注册(带用户名实时检测)
2006/12/02 PHP
php面向对象全攻略 (十五) 多态的应用
2009/09/30 PHP
PHP fopen()和 file_get_contents()应用与差异介绍
2014/03/19 PHP
PHP中exec与system用法区别分析
2014/09/22 PHP
php实现网站留言板功能
2015/11/04 PHP
初学JavaScript第二章
2008/09/30 Javascript
一个简单的jQuery插件制作 学习过程及实例
2010/04/25 Javascript
js函数调用常用方法详解
2012/12/03 Javascript
深入理解JavaScript系列(29):设计模式之装饰者模式详解
2015/03/03 Javascript
javascript实现带下拉子菜单的导航菜单效果
2015/05/14 Javascript
js实现数组转换成json
2015/06/26 Javascript
jquery过滤特殊字符',防sql注入的实现方法
2016/08/17 Javascript
前端js弹出框组件使用方法
2020/08/24 Javascript
nodejs创建简易web服务器与文件读写的实例
2017/09/07 NodeJs
JS实现动态生成html table表格的方法分析
2018/07/11 Javascript
JavaScript插入排序算法原理与实现方法示例
2018/08/06 Javascript
了解javascript中let和var及const关键字的区别
2019/05/24 Javascript
JS实现网站楼层导航效果代码实例
2020/06/16 Javascript
[43:03]完美世界DOTA2联赛PWL S2 PXG vs Magma 第二场 11.21
2020/11/24 DOTA
利用Django框架中select_related和prefetch_related函数对数据库查询优化
2015/04/01 Python
python编写简单爬虫资料汇总
2016/03/22 Python
Python 自动刷博客浏览量实例代码
2017/06/14 Python
Django rest framework工具包简单用法示例
2018/07/20 Python
如何在Cloud Studio上执行Python代码?
2019/08/09 Python
使用TensorFlow搭建一个全连接神经网络教程
2020/02/06 Python
Python基于traceback模块获取异常信息
2020/07/23 Python
css3实现文字首尾衔接跑马灯的示例代码
2020/10/16 HTML / CSS
仿CSDN Blog返回页面顶部功能实现原理及代码
2013/06/30 HTML / CSS
《英英学古诗》教学反思
2014/04/11 职场文书
初三学习计划书范文
2014/04/30 职场文书
毕业设计说明书
2014/05/07 职场文书
师范生免费教育协议书范本
2014/10/09 职场文书
2014年党小组工作总结
2014/12/20 职场文书
九年级英语教学反思
2016/02/15 职场文书
适合青年人白手起家的创业项目分享
2019/08/16 职场文书