<?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