php生成数据字典小脚本,在thinkphp框架中可直接执行

这是一个在ThinkPHP框架内用于生成数据字典的PHP脚本,可方便地展示数据库表结构,并生成可供直接粘贴到Word中的表格。脚本包括了查询数据库表、获取字段信息并格式化输出的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在thinkphp中写的页面生成数据字典脚本,生成表格可直接粘贴在word中
效果如图

控制器代码,放入thinkphp框架可直接使用,在数据库配置文件可选择数据库。
<?php
namespace Home\Controller;
use Think\Controller;

/**
 * 邀请控制类
 */
class DictController extends Controller {

	/**
	 * 构造函数
	 */
	function __construct()
    {
    	parent::__construct();
    	# code...
    }


    public function index()
    {
    	$this->dictionary();
    }

    /**
     * 数据字段
     * @param  [String] $tbname [数据库表]
     * @return [Array]         [数据表模版]
     */
    function dictionary(){
        $data = array_merge($_GET,$_POST);
        $tbname = $data['tbname'];
        echo "<title>数据字典</title>";
        $model   = M();
        $db_name = C("DB_NAME");
        echo "<table style='font-size:12px;' width='50%' border=0 cellspacing=1 cellpadding=10 bgcolor='#ffffff'><tr><td width='50%'><b>数据库:$db_name</b><td>";
        $db_rst  = $model->query("SHOW TABLES"); 
        $table_field_name = strtolower("Tables_in_$db_name");
        $tb_lst  = $tbname ? array(array($table_field_name=>$tbname)) : $db_rst;
        echo "<td align=right><select οnchange='location.href=this.value;'>";
        echo "<option value='".U()."'>╇请选择数据表</option>";
        foreach ($db_rst as $k => $v) {
            $tablename            = $v[$table_field_name];
            $cmt_rst              = $model->query("SHOW CREATE TABLE $tablename");
            $cmt_str              = $cmt_rst[0]['create table'];
            $cmt_str              = substr($cmt_str,strpos($cmt_str,"COMMENT='")+8);
            $selected = ($v[$table_field_name]==$tbname) ? "selected=\"selected\"" : "";
            echo "<option value='".U($this,array('tbname'=>$v[$table_field_name]))."' $selected> ┗━".$v[$table_field_name]."(".$cmt_str.")</option>";
        }
        echo "</select></td></tr></table>";
        foreach ($tb_lst as $k => $v){
            $dict[]['table_Name'] = $v[$table_field_name];
            $tablename            = $v[$table_field_name];
            $cmt_rst              = $model->query("SHOW CREATE TABLE $tablename");
            $cmt_str              = $cmt_rst[0]['create table'];
            $cmt_str              = substr($cmt_str,strpos($cmt_str,"COMMENT='")+8);
            echo "<table style='font-size:12px;' width='50%' border=0 cellspacing=1 cellpadding=0 bgcolor='#666666'>";
            // echo "<tr><td colspan='4' style='border-bottom:solid  1px #000;color:blue;' bgcolor='#ffffff'><b>".$v[$table_field_name]."($cmt_str)</b></td></tr>";
            echo "<tr><td colspan='4' style='border-bottom:solid  1px #000;color:blue;' bgcolor='#ffffff'><b>".$v[$table_field_name]."</b></td></tr>";
            echo "<tr><td style='border-bottom:solid 1px #000'><b >数据字段</td><td style='border-bottom:solid 1px #000'><b>字段描述</td><td style='border-bottom:solid 1px #000'><b>字段类型</td><td style='border-bottom:solid 1px #000'><b>允许为空</td></tr>";
            $fld_rst            = $model->query("select * from information_schema.columns where  table_schema = '$db_name' and table_name = '$tablename'");
            $dict_child         = array();
            foreach ($fld_rst as $f => $d) {
                $dict_child[]   = self::fieldformat($d);
            }
            $dict[]['Field_List'] = $dict_child;
            echo "</table>";
            echo "<BR><BR>";
        }
    }

     //输出直线并且换行
    function _cl(){
        echo "--------------------------------------------------------------------------------<Br>";
    }

    //字段格式化
    function fieldformat($arr = ""){
        if(is_array($arr)){
            echo "<tr bgcolor='#ffffff'>";
            echo "<td width='20%'>".$arr['column_name']."</td>";
            echo "<td width='40%'>".$arr['column_comment']."</td>"; 
            echo "<td width='20%'>".$arr['column_type']."</td>"; 
            echo "<td width='20%'>".$arr['is_nullable']."</td>"; 
            echo "</tr>";
        }
    }
}



在数据库配置文件中选择数据库
<?php
	//数据库配置1
 return array(
 		'db_type'	=>	'mysql',
 		'db_user'	=>	'root',
 		'db_pwd'	=>	'',
 		'db_host'	=>	'localhost',
 		// 'db_user'	=>	'root',
 		// 'db_pwd'	=>	'',
 		// 'db_host'	=>	'127.0.0.1',
 		'db_port'	=>	'3306',
 		'db_name'	=>	'logistics_vehicle',
 		'db_charset'=>	'utf8',
 		// 'db_prefix' =>	't_',
 		'DB_FIELDS_CACHE'       =>  false,
 );

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值