ThinkPHP 数据库表结构处理类(简单实用)

<?php
/*
 *	mysql表结构处理类
 *	创建数据表,增加,编辑,删除表中字段
 *
 */
class MysqlManage{
	/*
	 * 创建数据库,并且主键是aid
	 * table 要查询的表名
	 */
	function createTable($table){
		$sql="CREATE TABLE IF NOT EXISTS `$table` (`aid` INT NOT NULL primary key)ENGINE = InnoDB;";
		M()->execute($sql);
		$this->checkTable($table);
	}
	/*
	 * 检测表是否存在,也可以获取表中所有字段的信息
	 * table 要查询的表名
	 * return 表里所有字段的信息
	 */
	function checkTable($table){
		$sql="desc `$table`";
		$info=M()->execute($sql);
		return $info;
	}

	/*
	 * 检测字段是否存在,也可以获取字段信息(只能是一个字段)
	 * table 表名
	 * field 字段名
	 */
	function checkField($table,$field){
		$sql=‘desc `$table` $field‘;
		$info=M()->execute($sql);
		return $info;
	}

	/*
	 * 添加字段
	 * table 表名
	 * info  字段信息数组 array
	 * return 字段信息 array
	 */
	function addField($table,$info){
		$sql="alter table `$table` add ";
		$sql.=$this->filterFieldInfo();
		M()->execute($sql);
		$this->checkField($table,$info[‘name‘]);
	}

	/*
	 * 修改字段
	 * 不能修改字段名称,只能修改
	 */
	function editField($table,$info){
		$sql="alter table `$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‘]   字段备注
	 */
	private function filterFieldInfo($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‘:‘NOT NULL‘;
				$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‘:‘NOT NULL‘;
				$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‘:‘NOT NULL‘;
				$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,则为删除成功
	 */
	function dropField($table,$field){
		$sql="alter table `$table` drop column $field";
		M()->execute($sql);
		$this->checkField($table,$filed);
	}

	/*
	 * 获取指定表中指定字段的信息(多字段)
	 */
	function getFieldInfo($table,$field){
		$info=array();
		if(is_string($field)){
			$this->checkField($table,$field);
		}else{
			foreach($field as $v){
				$info[$v]=$this->checkField($table,$v);
			}
		}
		return $info;
	}
}

好久没有写博客了,最近忙的要死,搞微信平台,偶尔遇到需要模型管理,前台表单直接修改表结构的,就自己简单写了一下,也不是很难,给大家一个思路,看不懂了可以联系我

Power By 尛雷QQ:2387813033   QQ群:252799167

ThinkPHP 数据库表结构处理类(简单实用)

时间: 2024-10-19 01:38:49

ThinkPHP 数据库表结构处理类(简单实用)的相关文章

Activiti数据库表结构(表详细版)

http://blog.csdn.net/hj7jay/article/details/51302829 1  Activiti数据库表结构 1.1      数据库表名说明 Activiti工作流总共包含23张数据表,所有的表名默认以“ACT_”开头. 并且表名的第二部分用两个字母表明表的用例,而这个用例也基本上跟Service API匹配. u  ACT_GE_* : “GE”代表“General”(通用),用在各种情况下: u  ACT_HI_* : “HI”代表“History”(历史)

Activiti工作流引擎数据库表结构

版权声明:本文为博主原创文章,未经博主允许不得转载.不经过允许copy,讲追究法律责任,欢迎加入我们的学习提升群466355109,可以相互交流 数据库表的命名 Acitiviti数据库中表的命名都是以ACT_开头的.第二部分是一个两个字符用例表的标识.此用例大体与服务API是匹配的. l  ACT_RE_*:'RE'表示repository.带此前缀的表包含的是静态信息,如,流程定义,流程的资源(图片,规则等). l  ACT_RU_*:'RU'表示runtime.这是运行时的表存储着流程变量

Activiti工作流数据库表结构

Activiti工作流引擎数据库表结构 数据库表的命名 Acitiviti数据库中表的命名都是以ACT_开头的.第二部分是一个两个字符用例表的标识.此用例大体与服务API是匹配的. ACT_RE_*:’RE’表示repository.带此前缀的表包含的是静态信息,如,流程定义,流程的资源(图片,规则等). ACT_RU_*:’RU’表示runtime.这是运行时的表存储着流程变量,用户任务,变量,职责(job)等运行时的数据.Activiti只存储实例执行期间的运行时数据,当流程实例结束时,将删

activiti数据库表结构全貌解析

下面本人介绍一些activiti这款开源流程设计引擎的数据库表结构,首先阐述:我们刚开始接触或者使用一个新的东西(技术)时我们首先多问一下自己几个为什么?为什么activiti在工作流程领域这么流行呢?仅仅是因为开源么?实现如此强大的流程引擎,activiti底层设计是如何进行的?activiti中依赖哪些技术等?这些可能应该是那些刚接触这个开源流程引擎产品的人应该有的疑问.我们在用开源产品的都是其实应该多问自己为什么?这样才能有所进步,不是么?兴许你一时兴起,“起笔”就把一款属于你自己的开源作

开源一个适用iOS的数据库表结构更新机制的代码

将前段时间开源的代码,发布一下: ARDBConfig On the iOS, provide a database table structure update mechanism, ensure that the user in any version of the installer, the database structure to ensure adapter. (在iOS上,提供一个数据库表结构更新的机制,保证用户无论从哪个版本安装程序,数据库结构保证适配.) 如:用户A的数据库版

API文档管理工具-数据库表结构思考.

API文档管理工具-数据库表结构思考. PS: 管理工具只是为了方便自己记录API的一些基本信息,方便不同的开发人员 (App Developer, Restful API Developer)之间的工作协调,同时也是由于本人不擅长word文档编写,程序及设计简单,大牛勿喷! API基础信息表 CREATE TABLE API_Infor 2 ( 3 ApiID uniqueidentifier PRIMARY KEY 4 ,ApiCategory int 5 ,ApiSupport nvarc

不同数据库表结构的转化,PowerDesigner的使用教程

通过学习PowerDesigner工具,学习概念模型,物理模型,面向对象模型,业务模型,以及不同数据库表结构的转化. 通过案例给大家分享,sql server 2008r2 数据库和oracle数据库之间的转换方式.在学习转换之前先认识几个概念. 概念模型:对数据和信息进行建模,利用实体-关系图(E-R图)的形式组织数据,检验数据设计的有效性和合理性. 逻辑数据模型 (LDM):逻辑模型主要是使得整个概念模型更易于理解,同时又不依赖于具体的数据库实现,使用逻辑模型可以生成针对具体数据库管理系统的

请设计一套图书馆借书管理系统的数据库表结构

请设计一套图书馆借书管理系统的数据库表结构:可以记录基本的用户信息.图书信息.借还书信息:数据表的个数不超过6个:请画表格描述表结构(需要说明每个字段的字段名.字段类型.字段含义描述): 在数据库设计中应: 1.保证每个用户的唯一性: 2.保证每种图书的唯一性:每种图书对应不等本数的多本图书:保证每本图书的唯一性: 3.借书信息表中,应同时考虑借书行为与还书行为,考虑借书期限: 4.保证借书信息表与用户表.图书信息表之间的参照完整性: 5.限制每个用户最大可借书的本数 6.若有新用户注册或新书入

关系型数据库表结构设计规范-浅谈(转)

数据库表结构设计规范-浅谈,为啥是浅谈呢,因为主要的观点还是来自原微信公共账号的一篇文章,稍微加了一些自己的看法. 谁来进行数据库的设计? 肯定是具体的开发工程师来进行,开发同学的话,第一业务熟悉度比较高,第二结合OO和ORM的思想,能有比较好的运用关系型数据库的特性.如果是DBA同学的话,虽然对于数据库本身了解比较多,但是对于业务了解较少,很难有比较客观的设计.但是业务上线或者运行期间,需要DBA同学能够重度的加入进来,针对一些性能点和不合理的点进行优化,同事也可以在上线前,针对SQL进行re