使用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数据字典
一个项目完成之后,按照需求,我需要给这个项目写设计文档,数据库字典。 设计文档到时好说,但是数据库字典可真的是有点吓到我了。 项目开始的比较急,最开始建数据库的时候没有用excel写数据库字典。 这几十张表的数据…...
React(7)
1.React Hooks 使用hooks理由 1. 高阶组件为了复用,导致代码层级复杂 2. 生命周期的复杂 3. 写成functional组件,无状态组件 ,因为需要状态,又改成了class,成本高 1.1 useState useState();括号里面处的是初始值;返回的是一个…...
MySQL8.0新特性之用户管理
密码插件,在8.0中替换为了 sha2模式在8.0中不支持grant直接创建用户并授权,必须先建用户后grant授权。 关于密码插件sha2带来的坑? 客户端工具,navicat 、 sqlyog工具不支持(无法连接)主从复制,MGR &…...
强推9个研究生必备的免费论文下载网站
一、文献党下载器 文献党下载器把庞大的中外文献数据库资源集成在一个平台,就是把大量的中外数据库资源整合在一个站(目前文献资源量名列前茅)。不论是中文还是外文文献,不论是哪种文献类型,不论是哪个学科领域该网站…...
解读2023年上半年财报:继续押注儿童业务的361°,有着怎样的野心?
“足球热”的风还是吹到了青少年身边,近日,济南历城二中女足问鼎2023世界中学生足球锦标赛女子组冠军,中国球队时隔16年再次获得世界中学生足球锦标赛冠军,点燃了不少足球爱好者的热情。 少儿体育热之下,与之相关的运…...
音视频 ffplay播放控制
选项说明q, ESC退出播放f全屏切换p, SPC暂停m静音切换9, 09减少音量,0增加音量a循环切换音频流v循环切换视频流t循环切换字幕流c循环切换节目w循环切换过滤器或显示模式s逐帧播放left/right向后/向前拖动10秒down/up向后/向前拖动1分钟鼠标右键单击拖动与显示宽度对…...
扁线电机定子转子工艺及自动化装备
售:扁线电机 电驱对标样件 需要请联:shbinzer (拆车邦) 新能源车电机路线大趋势,自动化装配产线需求迫切永磁同步电机是新能源车驱动电机的主要技术路线。目前新能源车上最广泛应用的类型为永磁同步电机,…...
分类预测 | MATLAB实现DRN深度残差网络多输入分类预测
分类预测 | MATLAB实现DRN深度残差网络多输入分类预测 目录 分类预测 | MATLAB实现DRN深度残差网络多输入分类预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.分类预测 | MATLAB实现DRN深度残差网络多输入分类预测 2.代码说明:MATLAB实现DRN深度残差网络…...
docker学习(十五)docker安装MongoDB
什么是MongoDB? MongoDB 是一个开源的、面向文档的 NoSQL 数据库管理系统,它以高性能、灵活的数据存储方式而闻名。与传统的关系型数据库不同,MongoDB 采用了一种称为 BSON(Binary JSON)的二进制 JSON 格式来存储数据。它是一种非…...
3.JQuery closest()的用法
closest()是一个非常好用的查找祖先对象的方法,它和parent()和parents()相比,优点是简洁直观,返回0或1个对象,避免了返回很多对象而不知道怎么处理的尴尬&…...
速通蓝桥杯嵌入式省一教程:(七)定时器输入捕获中断与PWM频率占空比测量
前文已经讲述过定时器的两个用法:基本定时中断与PWM输出。本节接着介绍第三种用法:定时器输入捕获中断。 在此之前,需要解释一下前文一直出现过的与定时器有关的概念。 定时器(TIMER):所谓定时器,其基本功能就是定时…...
深入理解python虚拟机:程序执行的载体——栈帧
栈帧(Stack Frame)是 Python 虚拟机中程序执行的载体之一,也是 Python 中的一种执行上下文。每当 Python 执行一个函数或方法时,都会创建一个栈帧来表示当前的函数调用,并将其压入一个称为调用栈(Call Stac…...
云服务器-Docker容器-系统搭建部署
一、引言 最近公司在海外上云服务器,作者自己也搞了云服务器去搭建部署系统,方便了解整体架构和系统的生命周期,排查解决问题可以从原理侧进行分析实验。虽然用的云不是同一个,但是原理都是相通的。 二、选型 作者选用的是腾讯云…...
ES 索引重命名--Reindex(一)
ES reindex脚本流程,下图为整体流程: 步骤(1):每次写入把之前的索引删除再重新创建索引,然后判断索引是否创建成功,由于创建成功返回结果是json,因此用Json Input插件去解析json获得…...
Spring之bean的生命周期
目录 1.Bean的初始化过程 1.1代码详解 1.2思考 2.Bean的单例与多例选择 2.1论证单例与多例优缺点 2.2论证初始化时间点 2.3个例演示 Spring Bean的生命周期: 一、通过XML、Java annotation(注解)以及Java Configuration(配置类),等方式…...
策略梯度方法
策略梯度方法 数学背景 给定一个标量函数 J ( θ ) J\left(\theta\right) J(θ),利用梯度上升法,使其最大化,此时的 π θ \pi_\theta πθ就是最优策略。 θ t 1 θ t α ∇ θ J ( θ t ) \theta_{t1}\theta_t\alpha \nabla_\theta…...
博客系统之单元测试
对博客系统进行单元测试 1、测试查找已存在的用户 测试名称 selectByUsernameTest01 测试源码 //查找用户,存在 Test public void selectByUsernameTest01 () { UserDao userDao new UserDao(); String ret1 userDao.selectByUsername("张三").toStr…...
【ARM v8】如何在ARM上实现x86的rdtsc()函数
博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。 博客…...
redis--事务
redis事务 在Redis中,事务是一组原子性操作的集合,它们被一起执行,要么全部执行成功,要么全部回滚。虽然Redis的事务并不遵循传统数据库的ACID特性,但它仍然提供了一种将多个命令打包成一组执行的机制,适用…...
111. 二叉树的最小深度
111. 二叉树的最小深度 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明:叶子节点是指没有子节点的节点。 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeN…...
记一次ubuntu 22.04安装旧版 MongoDB 4.2
22.04版本比较新,由于mongodb 2.4太老了,安装会遇到问题。特此记录1. 下载mongodb包wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1804-4.2.24.tgz2. 解压到当前目录sudo tar -zxvf mongodb-linux-x86_64-ubuntu1804-4.2.24.tgz3.…...
2026年5月PLC厂家:十大品牌专业评测解决工厂自动化选型难
摘要当制造业加速迈向智能化和柔性生产,PLC作为工业自动化的核心控制单元,其选型直接决定了产线效率、系统稳定性与长期运营成本。然而,面对众多品牌在技术路线、开放程度、生态兼容性上的显著分化,决策者常陷入“性能与成本如何平…...
AI Agent 的难点,不在搭 Demo,而在让人敢交任务
Agent难在让人敢托付 很多团队做 Agent 的误会,是把跑通一次当成好用。 现在搭一个 Demo 确实不难。一个大模型,几段提示词,接几个搜索、表格、浏览器或数据库工具,很快就能演示一个会拆任务、会调用工具、会输出结果的流程。看起…...
在多轮对话应用中体验Taotoken路由策略对响应速度的优化
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 在多轮对话应用中体验Taotoken路由策略对响应速度的优化 1. 场景与背景 在开发一个需要多轮交互的对话应用时,我们常常…...
形转化理论:基本概念、深刻机制与研究框架的系统性阐述
摘要形转化理论(Form-Transformation Theory, FTT)是一种基于信息本体论的全新物理范式,旨在将宇宙的基本实在重新界定为永恒、离散的信息处理网络动力学。本文系统阐述该理论的核心概念体系、两大支柱性数学框架及从微观网络到宏观物理的涌现…...
Simulink仿真避坑指南:PWM控制48V直流电机时,轻载和重载下的参数设置与波形分析(附2018a源文件)
Simulink仿真避坑指南:PWM控制48V直流电机时,轻载和重载下的参数设置与波形分析 在工程实践中,直流电机的仿真建模是验证控制算法和预测系统性能的关键环节。特别是当面对不同负载条件时,如何准确设置电机参数并解读仿真波形&…...
如何高效使用炉石传说脚本:终极完整指南解决你的自动化难题
如何高效使用炉石传说脚本:终极完整指南解决你的自动化难题 【免费下载链接】Hearthstone-Script Hearthstone script(炉石传说脚本) 项目地址: https://gitcode.com/gh_mirrors/he/Hearthstone-Script 你是否厌倦了炉石传说中重复性的…...
AI智能体审批系统设计:从规则到价值网络的动态决策引擎
1. 项目概述:为什么AI需要“举手提问”?在AI智能体(Agent)日益深入业务流程自动化的今天,一个核心的、却常被忽视的问题浮出水面:这个拥有一定自主决策能力的“数字员工”,在什么情况下应该停下…...
基于OpenClaw的GitHub趋势智能监控器:自动化追踪与AI摘要推送
1. 项目概述:一个为开发者打造的GitHub趋势智能监控器 作为一名长期泡在GitHub上的开发者,我深知每天手动刷“Trending”页面有多低效。热门项目层出不穷,但真正值得关注的往往就那么几个,而且很容易被淹没在信息流里。直到我遇到…...
OpenClaw用户如何快速接入Taotoken并配置自定义模型提供方
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 OpenClaw用户如何快速接入Taotoken并配置自定义模型提供方 对于使用OpenClaw这类Agent工具的开发者而言,直接利用Taoto…...
