선택삽입


첫 번째 데이터 삽입 방법은 컬럼 개수에 맞게 전체의 데이터를 입력하는 방식이었습니다. 데이터를 입력하다 보면 전체의 데이터를 모두 입력할 필요가 없는 경우도 많습니다.

INSERT 쿼리 명령 시 테이블 이름 뒤에 괄호를 이용하여 입력하고자 하는 컬럼명을 지정 할 수 있습니다. 지정된 컬럼만 선택되어 데이터를 삽입하게 됩니다. 이때도 지정한 컬럼의 개수와 데이터의 개수는 일치해야 합니다.

|쿼리 문법|

INSERT INTO 테이블명 (컬럼명1, 컬럼명2, 컬럼명3, ...) VALUES (value1, value2, value3, ...);


쿼리 실습


컬럼을 선택하여 입력할 때는 테이블의 컬럼의 순서와 상관없습니다.

|예제 쿼리|

insert into members (LastName,Country) values ('jiny','korea');

선언한 순서대로 1:1로 매칭이 되어 데이터 값이 입력됩니다.

|콘솔 실습 화면|

mysql> insert into members (LastName,Country) values ('jiny','korea');
Query OK, 1 row affected (0.00 sec)

정상적으로 데이터 입력 쿼리가 실행되었습니다. Select 명령을 통하여 데이터를 확인해 봅니다.

|콘솔 실습 화면|

mysql> select * from members;
+----+----------+-----------+----------+-------+---------+
| Id | LastName | FirstName | Address  | City  | Country |
+----+----------+-----------+----------+-------+---------+
|  1 | hojin    | lee       | shinchon | seoul | korea   |
|  2 | jiny     | NULL      | NULL     | NULL  | korea   |
+----+----------+-----------+----------+-------+---------+
2 rows in set (0.00 sec)

우리는 테이블의 모든 컬럼에 데이터를 저장하지 않았습니다. 결과를 보면 입력한 값 이외의 필드에는 NULL로 채워집니다.


PHP 실습


PHP코드를 통하여 데이터를 삽입하도록 합니다. 관련 메서드를 생성하여 소스에 적용합니다.

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

// array 배열기반 insert 쿼리를 생성합니다.
public function arrQueryInsert($tbname, $arr)
{
    $arrKey = array_keys($arr);
    For ($i=0;$i<count($arr);$i++) {
        // $key = $arr[$i];
        echo $arrKey[$i]."<br>";
        $key = $arrKey[$i];
        $insert_filed .= "`".$key."`,"; 
        $insert_value .= "'".$arr[$key]."',";
    }

    $queryString = "INSERT INTO ".$tbname." ($insert_filed) VALUES ($insert_value);";
    $queryString = str_replace(",)",")",$queryString);
    return $queryString;               
}

// 어레이데이터를 insert 쿼리로 삽입합니다. 
public function arrInsert($tbname, $arr)
{
            if ($tbname) {
                $queryString = $this->arrQueryInsert($tbname, $arr);

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

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

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

            } else {
               $this->msgEcho("Error] 테이블 이름이 없습니다."); 
            }

}

예제 파일 | insert-01.php

<?php
	include "dbinfo.php";
	include "mysql.class.php";
 
	// ++ Mysqli DB 연결.
	$db = new JinyMysql();

	// 어레이 배열의 키/값을 통하여 데이터를 삽입합니다.
	$tbname = "members";
	$arr = array('FirstName' => "jiny", 'LastName' => "1234");
	$db->arrInsert($tbname,$arr);
?>

화면 출력

mysql connected!
FirstName
LastName
새로운 데이터를 삽입합니다.
쿼리성공] INSERT INTO members (`FirstName`,`LastName`) VALUES ('jiny','1234')