선택삽입
첫 번째 데이터 삽입 방법은 컬럼 개수에 맞게 전체의 데이터를 입력하는 방식이었습니다. 데이터를 입력하다 보면 전체의 데이터를 모두 입력할 필요가 없는 경우도 많습니다.
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')