ThinkPHP 数据库表结构处理类(简单实用)-阿里云开发者社区

开发者社区> 晚来风急> 正文

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

简介:
+关注继续查看
<?php
/*
*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;
}
}

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


最新内容请见作者的GitHub页:http://qaseven.github.io/

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
回顾十年数据库流行度,哪款是你的最爱
从数据库流行度总体走势再到不同类型数据库的流行度变化情况
1025 0
android 屏蔽home 处理home
引用:http://my.oschina.net/chen106106/blog/51701 package com.test.qiao;      import android.app.Activity;   import android.
640 0
linux内核数据结构之链表【转】
转自:http://www.cnblogs.com/Anker/archive/2013/12/15/3475643.html 1、前言    最近写代码需用到链表结构,正好公共库有关于链表的。
730 0
【最佳实践】运用 Logstash Fingerprint 过滤器处理并删除 Elasticsearch 重复数据
这篇文章介绍了使用 Logstash 在 Elasticsearch 中对数据进行重复数据删除的方法。 根据你的用例,Elasticsearch中 的重复内容可能不被接受。 例如,如果你要处理指标,则 Elasticsearch中 的重复数据可能会导致错误的聚合和不必要的警报。 即使对于某些搜索用例,重复的数据也可能导致不良的分析和搜索结果。
2873 0
+关注
9380
文章
243
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载