当前位置: 首页 > 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…...

Cursor实现用excel数据填充word模版的方法

cursor主页&#xff1a;https://www.cursor.com/ 任务目标&#xff1a;把excel格式的数据里的单元格&#xff0c;按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例&#xff0c;…...

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化&#xff1a;人工智能的自我改进与监管挑战 文章目录 递归进化&#xff1a;人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管&#xff1f;3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

无法与IP建立连接,未能下载VSCode服务器

如题&#xff0c;在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈&#xff0c;发现是VSCode版本自动更新惹的祸&#xff01;&#xff01;&#xff01; 在VSCode的帮助->关于这里发现前几天VSCode自动更新了&#xff0c;我的版本号变成了1.100.3 才导致了远程连接出…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来&#xff0c;尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断&#xff0c;但全球市场热度依然高涨&#xff0c;入局者持续增加。 以国内市场为例&#xff0c;天眼查专业版数据显示&#xff0c;截至5月底&#xff0c;我国现存在业、存续状态的机器人相关企…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper&#xff08;简称 DM&#xff09;是 Linux 内核中的一套通用块设备映射框架&#xff0c;为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程&#xff0c;并配以详细的…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...