From 762e93bd332cbff2bbc8080c42df201100888917 Mon Sep 17 00:00:00 2001 From: wuhui_zzw <1760308791@qq.com> Date: Tue, 12 Mar 2024 11:43:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=BF=E6=8D=A2=E5=9F=9F=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../survey/controllers/SurveyController.php | 64 ++++++++++++++++++- 1 file changed, 62 insertions(+), 2 deletions(-) diff --git a/app/backend/modules/survey/controllers/SurveyController.php b/app/backend/modules/survey/controllers/SurveyController.php index bd8478e9..c0a25418 100644 --- a/app/backend/modules/survey/controllers/SurveyController.php +++ b/app/backend/modules/survey/controllers/SurveyController.php @@ -943,9 +943,15 @@ class SurveyController extends BaseController{ // 获取全部数据库列表 $tables = $this->getAllTable(); // 获取存在数据的表 - $hasTable = $this->getHasDataTable($tables,$notCleanUp); + // $hasTable = $this->getHasDataTable($tables,$notCleanUp); + // debug($hasTable); + + + + // 域名替换 + // $this->domainNameReplacement($tables,[]); + // debug("结束"); -debug($hasTable); // 执行清除操作 // foreach($tables as $name){ // if(!in_array($name,$notCleanUp)){ @@ -1000,6 +1006,60 @@ debug($hasTable); return $count > 0; } + // 数据库处理 - 域名替换 - 开始处理 + private function domainNameReplacement($tables,$notCleanUp){ + $tableList = []; + foreach($tables as $tableName){ + if(!in_array($tableName,$notCleanUp)){ + echo "{$tableName}\n\r"; + // 获取字段信息 + $allFieldDesc = \DB::select("show columns from {$tableName}"); + $allField = array_column($allFieldDesc,'Field'); + // if($this->isHasSpecifyData($allField,$name)) $tableList[] = $name; + + + $res = $this->isHasSpecifyData($allField,$tableName); + echo $res ? "存在\n\r" : "不存在\n\r"; + if($res){ + // 批量替换 + $query = "UPDATE {$tableName} SET "; + $handleFieldNum = 0; + foreach($allFieldDesc as $fieldInfo){ + if(strpos($fieldInfo['Type'], 'int') !== false || $fieldInfo['Key'] == 'PRI') continue; + + $fieldName = $fieldInfo['Field']; + $query .= "`{$fieldName}` = REPLACE(`{$fieldName}`,'testbzt.cdlfjy.com','shuizhi.test.cdlfjy.com'),"; + ++$handleFieldNum; + } + $query = trim($query); + $query = trim($query,','); + $query = trim($query); + echo "SQL({$handleFieldNum}):{$query}\n"; + if($handleFieldNum > 0) \DB::select($query); + } + + echo "\n\n\n"; + } + } + + return $tableList; + } + // 数据库处理 - 域名替换 - 生成sql + private function isHasSpecifyData($allField,$tableName){ + $query = "select * from {$tableName} where ("; + foreach($allField as $fieldName){ + $query .= "`{$fieldName}` like '%testbzt.cdlfjy.com%' OR "; + } + $query = trim($query); + $query = trim($query,'OR'); + $query = trim($query) . ")"; + + $result = \DB::select($query); + if($result) return true; + + return false; + } + }