php修改表结构类,ThinkPHP Mysql表结构修改类

/*

*    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 column";

$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'];

break;

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'];

break;

case 'text':

$newInfo['length']='';

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

$newInfo['default']='';

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

break;

}

$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;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值