当前位置: 首页 > news >正文

使用PHP生成MySQL数据字典

一个项目完成之后,按照需求,我需要给这个项目写设计文档,数据库字典。

设计文档到时好说,但是数据库字典可真的是有点吓到我了。

项目开始的比较急,最开始建数据库的时候没有用excel写数据库字典。

这几十张表的数据库,一个一个的写,那真的是酸爽。

但是,这一切好像又都不是事。

我们有强大的PHP啊。

下面给大家分享一个自己写的函数:使用PHP生成mysql字典。

<?php$dbhost = '127.0.0.1:3306';                         // mysql服务器主机地址$dbuser = 'root';                                 // mysql用户名$dbpass = 'root';                         // mysql用户名密码$dbname = "shopxo";//$mysql = mysqli_connect($dbhost, $dbuser, $dbpass);//这是mysql的链接方法$mysql = new mysqli("localhost", $dbuser,$dbpass,$dbname, "3306"); //这是mysqli的链接方法if(! $mysql ){die('连接失败: ' . mysqli_error($mysql));}$html = expertDirectory($mysql,$dbname);echo "<pre>";var_dump($html);/*** 导出数据库字典*/function expertDirectory($mysql,$dbname){mysqli_query($mysql, "set names utf8");$table_result = $mysql->query('show tables');$no_show_table = array();    //不需要显示的表$no_show_field = array();   //不需要显示的字段//取得所有的表名while($row = mysqli_fetch_array($table_result)){if(!in_array($row[0],$no_show_table)){$tables[]['TABLE_NAME'] = $row[0];}}//替换所以表的表前缀// if($_GET['prefix']){//  $prefix = 'sent_';//  foreach($tables as $key => $val){//    $tableName = $val['TABLE_NAME'];//    $string = explode('_',$tableName);//    if($string[0] != $prefix){ //      $string[0] = $prefix; //      $newTableName = implode('_', $string); //      $mysql->query('rename table '.$tableName.' TO '.$newTableName); //    }//  }//  echo "替换成功!";exit();// }//循环取得所有表的备注及表中列消息foreach ($tables as $k=>$v) {$sql  = 'SELECT * FROM ';$sql .= 'INFORMATION_SCHEMA.TABLES ';$sql .= 'WHERE ';$sql .= "table_name = '{$v['TABLE_NAME']}'  AND table_schema = '{$dbname}'";$table_result = $mysql->query($sql);while ($t = mysqli_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 = '{$dbname}'";$fields = array();$field_result = $mysql->query($sql);while ($t = mysqli_fetch_array($field_result) ) {$fields[] = $t;}$tables[$k]['COLUMN'] = $fields;}// $mysql->close($mysql_conn);$html = '';//循环所有表foreach ($tables as $k=>$v) {$html .= '  ' . ($k + 1) . '、' . $v['TABLE_COMMENT'] .'  ('. $v['TABLE_NAME']. ')'."
";$html .= '  '."
";$html .= '    '."
";$html .= '      '."
";$html .= '        字段名'."
";$html .= '        数据类型'."
";$html .= '        默认值'."
";$html .= '        允许非空'."
";$html .= '        自动递增'."
";$html .= '        备注'."
";$html .= '      '."
";foreach ($v['COLUMN'] as $f) {if(!@is_array($no_show_field[$v['TABLE_NAME']])){$no_show_field[$v['TABLE_NAME']] = array();}if(!in_array($f['COLUMN_NAME'],$no_show_field[$v['TABLE_NAME']])){$html .= '      '."
";$html .= '        ' . $f['COLUMN_NAME'] . ''."
";$html .= '        ' . $f['COLUMN_TYPE'] . ''."
";$html .= '        ' . $f['COLUMN_DEFAULT'] . ''."
";$html .= '        ' . $f['IS_NULLABLE'] . ''."
";$html .= '        ' . ($f['EXTRA']=='auto_increment'?'是':' ') . ''."
";$html .= '        ' . $f['COLUMN_COMMENT'] . ''."
";$html .= '      '."
";}}$html .= '    '."
";$html .= '  '."
";}return $html;}

其实这只是一个简单的小函数,平时用到的几率也不大。

但是,在需要的时候,他会给你省很多力气。

有好的建议,请在下方输入你的评论。

相关文章:

使用PHP生成MySQL数据字典

一个项目完成之后&#xff0c;按照需求&#xff0c;我需要给这个项目写设计文档&#xff0c;数据库字典。 设计文档到时好说&#xff0c;但是数据库字典可真的是有点吓到我了。 项目开始的比较急&#xff0c;最开始建数据库的时候没有用excel写数据库字典。 这几十张表的数据…...

React(7)

1.React Hooks 使用hooks理由 1. 高阶组件为了复用&#xff0c;导致代码层级复杂 2. 生命周期的复杂 3. 写成functional组件,无状态组件 &#xff0c;因为需要状态&#xff0c;又改成了class,成本高 1.1 useState useState();括号里面处的是初始值&#xff1b;返回的是一个…...

MySQL8.0新特性之用户管理

密码插件,在8.0中替换为了 sha2模式在8.0中不支持grant直接创建用户并授权&#xff0c;必须先建用户后grant授权。 关于密码插件sha2带来的坑&#xff1f; 客户端工具&#xff0c;navicat 、 sqlyog工具不支持&#xff08;无法连接&#xff09;主从复制&#xff0c;MGR &…...

强推9个研究生必备的免费论文下载网站

一、文献党下载器 文献党下载器把庞大的中外文献数据库资源集成在一个平台&#xff0c;就是把大量的中外数据库资源整合在一个站&#xff08;目前文献资源量名列前茅&#xff09;。不论是中文还是外文文献&#xff0c;不论是哪种文献类型&#xff0c;不论是哪个学科领域该网站…...

解读2023年上半年财报:继续押注儿童业务的361°,有着怎样的野心?

“足球热”的风还是吹到了青少年身边&#xff0c;近日&#xff0c;济南历城二中女足问鼎2023世界中学生足球锦标赛女子组冠军&#xff0c;中国球队时隔16年再次获得世界中学生足球锦标赛冠军&#xff0c;点燃了不少足球爱好者的热情。 少儿体育热之下&#xff0c;与之相关的运…...

音视频 ffplay播放控制

选项说明q, ESC退出播放f全屏切换p, SPC暂停m静音切换9, 09减少音量&#xff0c;0增加音量a循环切换音频流v循环切换视频流t循环切换字幕流c循环切换节目w循环切换过滤器或显示模式s逐帧播放left/right向后/向前拖动10秒down/up向后/向前拖动1分钟鼠标右键单击拖动与显示宽度对…...

扁线电机定子转子工艺及自动化装备

售&#xff1a;扁线电机 电驱对标样件 需要请联&#xff1a;shbinzer &#xff08;拆车邦&#xff09; 新能源车电机路线大趋势&#xff0c;自动化装配产线需求迫切永磁同步电机是新能源车驱动电机的主要技术路线。目前新能源车上最广泛应用的类型为永磁同步电机&#xff0c…...

分类预测 | MATLAB实现DRN深度残差网络多输入分类预测

分类预测 | MATLAB实现DRN深度残差网络多输入分类预测 目录 分类预测 | MATLAB实现DRN深度残差网络多输入分类预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.分类预测 | MATLAB实现DRN深度残差网络多输入分类预测 2.代码说明&#xff1a;MATLAB实现DRN深度残差网络…...

docker学习(十五)docker安装MongoDB

什么是MongoDB? MongoDB 是一个开源的、面向文档的 NoSQL 数据库管理系统&#xff0c;它以高性能、灵活的数据存储方式而闻名。与传统的关系型数据库不同&#xff0c;MongoDB 采用了一种称为 BSON&#xff08;Binary JSON&#xff09;的二进制 JSON 格式来存储数据。它是一种非…...

3.JQuery closest()的用法

closest&#xff08;&#xff09;是一个非常好用的查找祖先对象的方法&#xff0c;它和parent&#xff08;&#xff09;和parents&#xff08;&#xff09;相比&#xff0c;优点是简洁直观&#xff0c;返回0或1个对象&#xff0c;避免了返回很多对象而不知道怎么处理的尴尬&…...

速通蓝桥杯嵌入式省一教程:(七)定时器输入捕获中断与PWM频率占空比测量

前文已经讲述过定时器的两个用法&#xff1a;基本定时中断与PWM输出。本节接着介绍第三种用法&#xff1a;定时器输入捕获中断。 在此之前&#xff0c;需要解释一下前文一直出现过的与定时器有关的概念。 定时器(TIMER)&#xff1a;所谓定时器&#xff0c;其基本功能就是定时…...

深入理解python虚拟机:程序执行的载体——栈帧

栈帧&#xff08;Stack Frame&#xff09;是 Python 虚拟机中程序执行的载体之一&#xff0c;也是 Python 中的一种执行上下文。每当 Python 执行一个函数或方法时&#xff0c;都会创建一个栈帧来表示当前的函数调用&#xff0c;并将其压入一个称为调用栈&#xff08;Call Stac…...

云服务器-Docker容器-系统搭建部署

一、引言 最近公司在海外上云服务器&#xff0c;作者自己也搞了云服务器去搭建部署系统&#xff0c;方便了解整体架构和系统的生命周期&#xff0c;排查解决问题可以从原理侧进行分析实验。虽然用的云不是同一个&#xff0c;但是原理都是相通的。 二、选型 作者选用的是腾讯云…...

ES 索引重命名--Reindex(一)

ES reindex脚本流程&#xff0c;下图为整体流程&#xff1a; 步骤&#xff08;1&#xff09;&#xff1a;每次写入把之前的索引删除再重新创建索引&#xff0c;然后判断索引是否创建成功&#xff0c;由于创建成功返回结果是json&#xff0c;因此用Json Input插件去解析json获得…...

Spring之bean的生命周期

目录 1.Bean的初始化过程 1.1代码详解 1.2思考 2.Bean的单例与多例选择 2.1论证单例与多例优缺点 2.2论证初始化时间点 2.3个例演示 Spring Bean的生命周期&#xff1a; 一、通过XML、Java annotation&#xff08;注解&#xff09;以及Java Configuration(配置类),等方式…...

策略梯度方法

策略梯度方法 数学背景 给定一个标量函数 J ( θ ) J\left(\theta\right) J(θ)&#xff0c;利用梯度上升法&#xff0c;使其最大化&#xff0c;此时的 π θ \pi_\theta πθ​就是最优策略。 θ t 1 θ t α ∇ θ J ( θ t ) \theta_{t1}\theta_t\alpha \nabla_\theta…...

博客系统之单元测试

对博客系统进行单元测试 1、测试查找已存在的用户 测试名称 selectByUsernameTest01 测试源码 //查找用户&#xff0c;存在 Test public void selectByUsernameTest01 () { UserDao userDao new UserDao(); String ret1 userDao.selectByUsername("张三").toStr…...

【ARM v8】如何在ARM上实现x86的rdtsc()函数

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客…...

redis--事务

redis事务 在Redis中&#xff0c;事务是一组原子性操作的集合&#xff0c;它们被一起执行&#xff0c;要么全部执行成功&#xff0c;要么全部回滚。虽然Redis的事务并不遵循传统数据库的ACID特性&#xff0c;但它仍然提供了一种将多个命令打包成一组执行的机制&#xff0c;适用…...

111. 二叉树的最小深度

111. 二叉树的最小深度 给定一个二叉树&#xff0c;找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明&#xff1a;叶子节点是指没有子节点的节点。 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeN…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…...

JAVA后端开发——多租户

数据隔离是多租户系统中的核心概念&#xff0c;确保一个租户&#xff08;在这个系统中可能是一个公司或一个独立的客户&#xff09;的数据对其他租户是不可见的。在 RuoYi 框架&#xff08;您当前项目所使用的基础框架&#xff09;中&#xff0c;这通常是通过在数据表中增加一个…...