DELETE 시에 자동백업하기
마스터욱
0
39
0
0
2019-03-12 18:31:05
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | preg_match("/(.*)from(.*)where(.*)/is", $sql, $match); foreach($match as $key => $match_val){ $match[$key] = trim(str_replace("\n", "", $match_val)); } $crud = strtolower($match[1]); $table = strtolower($match[2]); $where = strtolower($match[3]); //print_r2($match); /* Array ( [0] => DELETE from test where idx = 1 and category = 2 [1] => DELETE [2] => test [3] => idx = 1 and category = 2 ) */ //delete 의 경우 자료백업 if($crud == "delete") { $sql_backup = "SELECT * FROM ".$table." WHERE ".$where; $backup_data = $this->query_assoc($sql_backup); $backup_data = json_encode($backup_data); $sql_backup_save = " INSERT ".PREFIX.$this->backup_table." SET writer_idx = ".$core['mem']->getUser("idx").", table_name = '".$table."', content = '".$backup_data."', reg_time = NOW() "; //echo $sql;exit; mysqli_query($this->connect, $sql_backup_save); } | cs |
백업 테이블을 하나 만들고,
DELETE 명령시에 백업 테이블에 데이터를 보존한다.
위 소스는 쿼리에 DELETE 가 포함될 경우 자동으로 테이블과 WHERE 절을 분리해서, 삭제하기전 데이터를 뽑은후, 백업테이블에 데이터를 INSERT 한다.
정규식의 강점~