ThinkPHP5.1 截断mysql数据表
在项目开发中,我们经常需要配合测试来清空数据库的一些数据,之前都是手动去数据库截断相对应的表,现在写了一个方法,方便清空数据。
1、新建存储数据表名的表
CREATE TABLE `blog_table` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID', `table_name` varchar(255) DEFAULT NULL COMMENT '表名', `description` varchar(100) DEFAULT NULL COMMENT '表注释', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='清空数据'2、调用清除数据的方法
public function clearTable(){ if(Request::isPost()){ $post = input('name'); /*验证密码*/ if($post == config('table_clear_key')){ $tableModel = db('table'); /*需要截断的表*/ $table_list = $tableModel->column('table_name'); set_time_limit(0); $database = config('database.database'); $tables_result = Db::query('show tables'); foreach($tables_result as $key=>$value){ $tables [$key]['TABLE_NAME'] = $value ['Tables_in_'.$database]; } /*不能截断的表*/ $no_clear = array( 'blog_table', 'blog_admin', 'blog_config', 'blog_config_cate', 'blog_area', ); foreach($tables as $key=>$value){ if(in_array($value['TABLE_NAME'],$no_clear)){ continue; } if(in_array($value['TABLE_NAME'],$table_list)) { Db::execute("truncate table " . $value['TABLE_NAME']); } } $this->success('清空成功'); }else{ $this->error('密码不正确'); } } }config('table_clear_key')是验证密码,这个操作写在后台,需要输入密码才能执行操作,可以有效阻止非专业人员误操作。