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

发表于:2014-8-28 09:43

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:尛雷    来源:51Testing软件测试网采编

<?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;
}
}
    好久没有写博客了,最近忙的要死,搞微信平台,偶尔遇到需要模型管理,前台表单直接修改表结构的,就自己简单写了一下,也不是很难,给大家一个思路
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号