테이블 복사, 데이터 복사 모두 SELECT를 통하여 데이터를 조회한 후에 복사를 진행합 니다. 따라서 복사를 진행할 때 WHERE 조건을 추가하여 필터링된 데이터만 복사할 수 도 있습니다. 이는 테이블의 전체 데이터를 복사하는 것이 아니라 필요한 부분만 처리하여 복사할 수 있습니다.

| 쿼리 문법 |

INSERT INTO 기본테이블 (컬럼명) SELECT (컬럼명) FROM 복사_테이블 WHERE 조건; 

15.5.1 PHP 코드

PHP 코드를 통하여 조건 설정된 데이터만 출력하여 데이터를 복사해 보도록 합니다.

| PHP 예제 | mysql.class.php 파일에 메서드 예제를 추가합니다.

// select 데이터를 테이블로 복사합니다.
public function insertSelectWhere($src, $dst, $where, $fields)
{
            if ($src) {

                if ($fields) {
                    $queryString = "insert into $dst ($fields) select $fields from $src where $where";
                } else {
                    $queryString = "insert into $dst select * from $src where $where";
                }                

                // 쿼리를 전송합니다.
                if (mysqli_query($this->dbcon, $queryString)=== TRUE) {
                    $this->msgEcho("쿼리성공] ".$queryString);
                    $this->msgEcho(" 데이터 복사!");

                    // 객체 반환, 매서드체인
                    return $this; 

                } else {
                    $this->msgEcho("Error] ".$queryString);
                }

            } else {
                $this->msgEcho("Error] 원본 테이블명을 적어주세요.");
            }  
}

예제 파일 | copy-05.php

<?php
 
	include "dbinfo.php";
	include "mysql.class.php";
 
	// ++ Mysqli DB 연결.
	$db = new JinyMysql();
 
	// 테이블을 복사합니다.
	$db->insertSelectWhere("members", "members1","Id=1","FirstName, LastName, email");
 
?>

화면 출력

mysql connected!
쿼리성공] insert into members1 (FirstName, LastName, email) select FirstName, LastName, email from members where Id=1
데이터 복사!