/*

*mysql表结构处理类

*创建数据表,增加,编辑,删除表中字段

*

*/

classMysqlManage{

/*

*创建数据库,并且主键是aid

*table要查询的表名

*/

functioncreateTable($table){

$sql="CREATETABLEIFNOTEXISTS`$table`(`aid`INTNOTNULLprimarykey)ENGINE=InnoDB;";

M()->execute($sql);

$this->checkTable($table);

}

/*

*检测表是否存在,也可以获取表中所有字段的信息

*table要查询的表名

*return表里所有字段的信息

*/

functioncheckTable($table){

$sql="desc`$table`";

$info=M()->execute($sql);

return$info;

}

/*

*检测字段是否存在,也可以获取字段信息(只能是一个字段)

*table表名

*field字段名

*/

functioncheckField($table,$field){

$sql='desc`$table`$field';

$info=M()->execute($sql);

return$info;

}

/*

*添加字段

*table表名

*info字段信息数组array

*return字段信息array

*/

functionaddField($table,$info){

$sql="altertable`$table`add";

$sql.=$this->filterFieldInfo();

M()->execute($sql);

$this->checkField($table,$info['name']);

}

/*

*修改字段

*不能修改字段名称,只能修改

*/

functioneditField($table,$info){

$sql="altertable`$table`modify";

$sql.=$this->filterFieldInfo($info);

M()->execute($sql);

$this->checkField($table,$info['name']);

}

/*

*字段信息数组处理,供添加更新字段时候使用

*info[name]字段名称

*info[type]字段类型

*info[length]字段长度

*info[isNull]是否为空

*info['default']字段默认值

*info['comment']字段备注

*/

privatefunctionfilterFieldInfo($info){

if(!is_array($info))

return

$newInfo=array();

$newInfo['name']=$info['name'];

$newInfo['type']=$info['type'];

switch($info['type']){

case'varchar':

case'char':

$newInfo['length']=empty($info['length'])?100:$info['length'];

$newInfo['isNull']=$info['isNull']==1?'NULL':'NOTNULL';

$newInfo['default']=empty($info['default'])?'':'DEFAULT'.$info['default'];

$newInfo['comment']=empty($info['comment'])?'':'COMMENT'.$info['comment'];

case'int':

$newInfo['length']=empty($info['length'])?7:$info['length'];

$newInfo['isNull']=$info['isNull']==1?'NULL':'NOTNULL';

$newInfo['default']=empty($info['default'])?'':'DEFAULT'.$info['default'];

$newInfo['comment']=empty($info['comment'])?'':'COMMENT'.$info['comment'];

case'text':

$newInfo['length']='';

$newInfo['isNull']=$info['isNull']==1?'NULL':'NOTNULL';

$newInfo['default']='';

$newInfo['comment']=empty($info['comment'])?'':'COMMENT'.$info['comment'];

}

$sql=$newInfo['name'].''.$newInfo['type'];

$sql.=(!empty($newInfo['length']))?($newInfo['length'])."":'';

$sql.=$newInfo['isNull'].'';

$sql.=$newInfo['default'];

$sql.=$newInfo['comment'];

return$sql;

}

/*

*删除字段

*如果返回了字段信息则说明删除失败,返回false,则为删除成功

*/

functiondropField($table,$field){

$sql="altertable`$table`dropcolumn$field";

M()->execute($sql);

$this->checkField($table,$filed);

}

/*

*获取指定表中指定字段的信息(多字段)

*/

functiongetFieldInfo($table,$field){

$info=array();

if(is_string($field)){

$this->checkField($table,$field);

}else{

foreach($fieldas$v){

$info[$v]=$this->checkField($table,$v);

}

}

return$info;

}

}

thinkphp mysql desc table_数据库表结构_ThinkPHP 数据库表结构处理类(简单实用)-云栖社区-阿里云...相关推荐

  1. mysql单表瓶颈_mysql单表性能瓶颈_优化系列 | 实例解析MySQL性能瓶颈排查定位-云栖社区-阿里云...

    导读 从一个现场说起,全程解析如何定位性能瓶颈. 排查过程 收到线上某业务后端的MySQL实例负载比较高的告警信息,于是登入服务器检查确认. 1. 首先我们进行OS层面的检查确认 登入服务器后,我们的 ...

  2. 阿里云 mysql主从_阿里云MySQL主从_Mater Slave_主备同步_MySQL主从_MySQL延迟-云栖社区-阿里云...

    1.背景 为了提高系统的可用性和数据保护,MySQL通常采用master-slave的部署结构,简单高效,master和slave之间使用binlog来复制数据. binlog支持statement和 ...

  3. coba mysql_在Android Studio中将数据从MySQL数据库显示到TextView中-问答-阿里云开发者社区-阿里云...

    我是新手,Android Studio我想将数据库(我使用MySQL)中的数据显示到中TextView.我也使用Button和RadioButton.单击按钮后,数据将显示在中TextView.这是我 ...

  4. mysql count join速度慢_MySql两张百万级表关联的count效率求解? 400 报错-问答-阿里云开发者社区-阿里云...

    select count(1) from B b inner join A a on a.id = b.personid where b.code like '32%' 这样试试呢######sele ...

  5. mysql linux改user_linux mysql误修改user表导致无法root用户登录,求大神帮助。-问答-阿里云开发者社区-阿里云...

    linux mysql误修改user表导致无法root用户登录,急救!!! mysql> select user,host,password from user; user host passw ...

  6. mysql云上迁移_自建mysql 迁移到云上-问答-阿里云开发者社区-阿里云

    详细解答可以参考官方帮助文档 使用 数据传输服务 DTS 可以将本地 MySQL 实例的数据迁移到 RDS for MySQL 实例.数据传输服务 DTS (以下简称 DTS) 提供的增量数据同步功能 ...

  7. mysql cluster 宕机 恢复_mysql cluster 集群恢复不起来,还请大神赐教?报错-问答-阿里云开发者社区-阿里云...

    mysql cluster 集群原本使用的几乎全是内存表,后来随着数据的增长,把大的内存表迁移到磁盘表了,之后集群出现6050错误,整个集群挂掉:之后重新启动集群一直启动不起来... ----以下是集 ...

  8. xml文件导入mysql_如何使用XML_LOAD()将XML文件导入MySQL数据库表;功能?mysql-问答-阿里云开发者社区-阿里云...

    我有一个看起来像这样的XML文件: 539 Name Surname email.domain.com 2011-04-02 13:30:00 2011-04-02 18:15:00 1,2,4,5, ...

  9. jfinal mysql读写分离_在JFinal中对数据库读写分离的实现:报错 -问答-阿里云开发者社区-阿里云...

    频繁使用 use(configName) 没有任何性能问题,仅仅是为变量赋一个 string 值而已,完全可以忽略######@JFinal######我现在也使用,读用的是视图model,写操作使用 ...

最新文章

  1. 用Duplex实现消息广播
  2. 《.Net框架程序设计》读书笔记 之 结构和索引器
  3. Java架构-面试前必须知道的MySQL命令【explain】
  4. 九度 1470 调整方阵
  5. c语言中的无符号字节,C语言之有符号数和无符号数
  6. 当 IDENTITY_INSERT 设置为 OFF 时,不能向表 中的标识列插入显式值错误的解决方法...
  7. python国内源很慢_软件下载太慢,为linux,R,python,conda配置国内源,让你快速下载安装大量国外软件...
  8. 人工智能+人=强大的网络安全
  9. AS3文本框的操作,为密码框添加按钮
  10. Python3 XML 解析
  11. QQ等级图标排名说明_QQ等级表,QQ最高等级(皇冠) qq到一星要5天
  12. java的duplicate用法_Java FloatBuffer duplicate()用法及代码示例
  13. docker部署eureka时无法启动容器(问题解决)
  14. linux java模拟器_在Android模拟器和Ubuntu上测试Linux驱动
  15. Ninja构建系统入门--GN与Ninja构建过程
  16. java 正序排序_Java8对list排序(正序倒序)
  17. IEEE2019论文:使用基于特征融合和缩放的具有空间上下文分析的单镜头检测器在无人机图像中检测小物体
  18. 【C++】游戏开发--基础
  19. sketch mac版设置快捷键的小技巧
  20. 【Java 8 新特性】Java 8中的Function.apply方法

热门文章

  1. EPS 转 pdf 在线
  2. Atitit.遍历图像像素点rgb java attilax总结
  3. Codeforces Round #114 (Div. 2)
  4. ZZULIOJ 1101: 逆序数字(函数专题)
  5. C语言——判断是该年的第几天
  6. 连续整数的和(51Nod-1138)
  7. Squeeze Net
  8. python生成簇_不调包用PYTHON写GMM(高斯混合模型)算法
  9. python只能对列表进行切片_Python中的列表
  10. 记录几个CentOS安装包(rpm)的下载地址-离线安装必备