本文实例讲述了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基于pdo操作数据库技巧总结》、《PHP运算与运算符用法总结》、《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《php操作office文档技巧总结(包括word,excel,access,ppt)》、《php日期与时间用法总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。