下载.jpg

generate-mysql-schema

#### 介绍

2020/9/5:

每次写些自己的东西时候总是遇到表要加新字段,然后就很麻烦要本地改完后再去自己服务器整一遍。

找了一圈没找到用PHP来控制数据库表结构的包,自己尝试写写吧。

一个php文件代表一张表,运行时没有表则直接新增,存在的话则更新表结构(我没有判断字段是否改动更新,都是直接全部更新)。

有人用的话,同时又闲的话可以把我这烂代码改改,哈哈哈~

#### 软件架构

今天天气真好~

#### 安装教程

1. 项目里运行: composer require lpc/generate-mysql-schema dev-master

2. git地址:[https://gitee.com/lpccc/generate-mysql-schema]

我的目录结构:就这样!!!

微信截图_20200907173729.png

#### 使用说明

1. 将2中的代码放进项目的php文件内,可在控制台执行都行;

2. 运行代码需要导入配置文件 run_base.php

$info = require "config/database.php";

$paramArr = getopt('t:');

$tableName = isset($paramArr['t'])?$paramArr['t']:null;

$lpc = new Run($info,$tableName);

echo "

";

var_dump($lpc->generate());//返回 true|false

exit;

控制台输入:

php run_base.php //全部表检查更新

php run_base.php -t user //检查更新指定表

php run_base.php -t user,user1 //检查更新指定多个表

3.配置文件 database.php

/*

* @Author: lpc

* @DateTime: 2020/9/5 18:16

* @Description: 管理数据库表配置文件

*/

return [

//连接数据库信息

'source_data' => [

'connection_type' => "mysqli",

'host' => '127.0.0.1',

'port' => 3306,

'username' => 'root',

'password' => 'root',

'dbname' => "lpc",

],

//表文件存在的位置

'dbschema_dir_path' => [

"table_path1",

"table_path2",

],

//自定义表字段类型

'diy_field_type' => [

'int' => 'int',

'varchar' => 'varchar',

]

];

4.上面配置文件的表文件格式,table_path1/user.php

table_path1文件路径要放在根目录或者代码能访问到的地方

/*

* @Author: lpc

* @DateTime: 2020/9/5 19:02

* @Description: 表模板

*/

/**

* type 类型

* length 类型长度

* unsigned 是否无符号

* autoincrement 是否自动增长

* required 是否必填

* default 默认值

* comment 注释

*/

return [

'columns' => [

'user_id' => [

'type' => 'int',

'length' => 11,

'unsigned' => true,

'autoincrement' => true,

'comment' => '用户Id',

],

'name' => [

'type' => 'varchar',

'length' => 50,

'required' => true,

'default' => 'lpc',

'comment' => '用户名',

],

'sex' => [

'type' => 'int',

'length' => 11,

// 'default' => 0,

// 'autoincrement' => true,

'comment' => '用户性别',

],

'age' => [

'type' => 'int',

'length' => 11,

'default' => 18,

'comment' => '用户年纪',

],

],

//主键 多个主键['user_id','name']

'primary' => ['user_id', 'sex'],

//索引

'index' => [

'ind_name' => ['type' => "normal", 'columns' => ['name','sex']],

'ind_age' => ['type' => "unique", 'columns' => ['age']],

],

//表名

'table_name' => 'user2',

//表注释

'comment' => '用户表',

'engine' => 'InnoDB',

'charset' => 'utf8mb4',

'collate' => 'utf8mb4_general_ci'

];

5 .配置完以上文件,就是直接运行$run->generate();了,就这样。

php 管理数组数据库,【PHP】一个用PHP数组管理数据库表结构更新功能的烂代码~...相关推荐

  1. PHP 二维数组根据另一个二维数组的值进行排序

    PHP 二维数组根据另一个二维数组的值进行排序 二维数组根据另一个二维数组的某个值进行排序 例子:有以下两个二维数组 goods:道具数组,记录了道具id.道具名称.道具价值 goodsUseTime ...

  2. 如何做一个类似QQ说说体系的表结构(一)

    如何做一个类似QQ说说体系的表结构 分析 首先用户是一个单独表,包括用户基本信息. 对于说说表,可以包括一些基本的信息,包括说说文字.发表日期.发表地点.浏览次数.点赞数等.但是,说说中的图片不能放在 ...

  3. 22、在有序数组中插入一个数值,数组仍然有序——数组

    插入数据,有序数组仍然有序 方法一: 在一个数组中完成的操作 代码实现: /*2017年6月19日16:31:52功能:向有序的数组中插入一个数据,但是数据仍然有序 */ #include<st ...

  4. java 数组 去掉第一个_java中数组的理解以及如何去掉断点

    数组也是对象 数组是放置相同类型的数据 数组里面放置的每一个变量都是有下标的. 数组的长度是确定的 数组的元素类型必须是相同的 数组类型可以是任何数据类型,包括基本类型和引用类型 数组变量属于引用类型 ...

  5. oracle 一个实例创建多个数据库_oracle 一个实例创建多个数据库

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  6. 后端开发如何设计数据库系列文章(二)设计大数据量表结构

    上篇文章讲解了传统数据库的一些设计注意点. 本篇为第二篇,在大数据量的情况下,如何去提前设计这个表结构,来达到一个比较好的效果.对于团队,对于后续的维护和扩展都带来更大的便利. 自增id 自增id还是 ...

  7. SQL Server删除整个数据库中表数据的方法(不影响表结构)

    1.查看数据库中所有表名称: select Name  from sysobjects where xtype='U' order by name asc; sysobjects是系统表,关于SQL ...

  8. php 数组指向下一个值,比较数组值并根据自定义值(PHP)在数组中查找下一个值 - php...

    我正在尝试比较数组中的值,然后根据所选值在数组中选择下一个值. 例如 array(05:11,05:21,05:24,05:31,05:34,05:41,05:44,05:50,05:54); 如果搜 ...

  9. java可存储100个整数的数组_定义一个一维整数数组,其中储存1000个1至100以内的整数,并统计出整数出现的次数(Java写出来)...

    代码如下: import java.util.Hashtable; import java.util.Random; public class Demo { public static void ma ...

  10. Oracle新建一个可以访问其他用户的表结构的用户

    最近在使用oracle的时候,为了安全,需要将指定表分配给一个新用户进行查看数据,看了很多例子,都不是很好,说的很模糊,后来经过实践,找出来了一个比较适当的方法,下面给大家分享. system:数据库 ...

最新文章

  1. @所有人,CSDN 粉丝专属福利来啦!
  2. 如何调试Android Native Framework
  3. 俞敏洪在北大2008年开学典礼上的演讲
  4. MySQL 调优/优化的 101 个建议
  5. 科比狂轰全场最高27分 联手鲨鱼同捧MVP奖杯
  6. LeetCode 16 最接近的三数之和
  7. 【SpringMVC】SpringMVC : 注解 @EnableWebMvc
  8. Shiro入门视频课程——笔记(一)
  9. Linux 远程连接工具 【vnc viewer】 图形界面
  10. VC++动态链接库编程之MFC规则DLL
  11. 《算法笔记》胡凡 例题/练习 答案
  12. AI上推荐 之 FM和FFM(九九归一)
  13. win10计算器rsh_Win10计算器快捷键
  14. 【数学建模】Python+Gurobi求解线性规划
  15. 面试官问我:什么是消息队列?什么场景需要他?用了会出现什么问题?
  16. c语言机票座位预定系统_课内资源 - 基于C语言的飞机票预订系统
  17. 28.找出字符串中第一个匹配项的下标
  18. 自动化测试效率提升方案
  19. SAXReader saxReader = new SAXReader();来解析xml文件
  20. php批量替换文件内容,写了个遍历目录、批量替换文件内容的类

热门文章

  1. Shell 相互调用
  2. Android Fragment-APP调用其他APP中的Fragment 1
  3. c语言单链表原地转置,不带头结点的单链表的插入,删除,原地转置,判断空,清空,统计节点数目等操作...
  4. java设置全选_[Java教程]jQuery设置checkbox全选(区别jQuery版本)
  5. IS-IS for IPv6技术原理
  6. 运维之Linux秋招重点(根据面经和常见笔试题总结,持续更新)
  7. Scrapy爬虫进阶操作之CrawlSpider(一)
  8. Android Handler机制之总目录
  9. Flask构建微电影(一)
  10. 双十一大战收官:荣耀反超苹果,以新思维新模式傲视群雄