发布于 3年前

MySQL数据库字典导出功能

由于项目需求会经常发生变化,导致数据库数据表可能结构上发生变化,这样可能会导致数据库字段说明文档跟数据库字段不一致问题,

同步更新文档又浪费时间,还不如直接将数据库导出成数据库字典不就完了,简单不费时。

主要数据库字典生成的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();//输出全部内容到浏览器
©2020 edoou.com   京ICP备16001874号-3