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')是验证密码,这个操作写在后台,需要输入密码才能执行操作,可以有效阻止非专业人员误操作。