由于项目需求会经常发生变化,导致数据库数据表可能结构上发生变化,这样可能会导致数据库字段说明文档跟数据库字段不一致问题,
同步更新文档又浪费时间,还不如直接将数据库导出成数据库字典不就完了,简单不费时。
主要数据库字典生成的SQL语句:
主要的程序代码是用PHP完成的,具体如下:
创建PDO连接MySQL实例:
try {
$this->conn = new PDO("mysql:host={$this->host};port={$this->port};dbname=information_schema", $this->user, $this->passwd, $this->driver_options);
$this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e){
echo $e->getMessage();
}
利用PDO预处理查询数据:
$result = $this->conn->prepare($sql);//准备查询语句
$result->execute();//执行查询语句,并返回结果集
$this->data = $result->fetchAll(PDO::FETCH_ASSOC);//获取结果集中的所有数据
设置导出文件头信息:
导出生成数据库字典word文档:
if (strpos($_SERVER["HTTP_USER_AGENT"], 'MSIE')) {
header("Content-Disposition: attachment; filename={$this->database}数据字典.doc");
}else if (strpos($_SERVER["HTTP_USER_AGENT"], 'Firefox')) {
header("Content-Disposition: attachment; filename={$this->database}数据字典.doc");
} else {
header("Content-Disposition: attachment; filename={$this->database}数据字典.doc");
}
header("Pragma:no-cache"); //不能被浏览器缓存
header("Expires:0"); //页面从浏览器高速缓存到期的时间分钟数,设定expires属性为0,将使对一页面的新的请求从服务器产生
ob_end_flush();//输出全部内容到浏览器