XAMPP 에서 아래 사진과 같이 MySQL 이 start인 상태라면 phpMyAdmin 이라는 DB 접속 툴을 사용할 수 있다.

브라우저에 http://localhost/phpmyadmin/ 을 입력한 후, 사용자 계정 탭 에서 사용자 추가를 눌러 데이터베이스와 데이터베이스 사용자(user)를 만들 수 있다.

이때, 모든 권한을 체크 해야 한다.

CREATE TABLE 테이블이름 ( 열1이름, 열2이름, 인덱스 ) ENGINE = MySQL 엔진이름;예시
CREATE TABLE `tbl_person` ( //INT 정수 타입, AUTO_INCREMENT 자동 증가 `person_id` INT NOT NULL AUTO_INCREMENT , //VARCHAR 문자열 타입, NOT NULL 비어 있으면 안 된다는 뜻 `name` VARCHAR(256) NOT NULL , `age` INT NOT NULL , PRIMARY KEY (`person_id`) //각 열을 구별하는 유일한 식별자 ) ENGINE = InnoDB;
SELECT 컬럼들 FROM 테이블명 WHERE 조건컬럼=조건값;예시
//tb1_person 테이블에서 person_id가 1인 행들의 모든 컬럼 조회 SELECT * FROM tbl_person where person_id = 1;
INSERT INTO 테이블명 (컬럼1, 컬럼2) values (컬럼1값, 컬럼2값);예시
INSERT INTO tbl_person (name, age) values ('yse', 50);SQL은 문자열을 감쌀 때
'(홑따옴표)만 사용 가능하다.
UPDATE 테이블명 set 컬럼1=컬럼1값, 컬럼2=컬럼2값 where 조건예시
UPDATE tbl_person set name='yse', age='30' where person_id = 1;
DELETE FROM 테이블명 where 조건예시
DELETE FROM tbl_person where person_id = 1;
php에서 데이터베이스에 접속하기 위해서는
PDO내장 객체를 사용해야 한다. 데이터베이스에 연결하는 함수db_get_pdo()를 분리했다.<?php function db_get_pdo() { $host = 'localhost'; // localhost는 본인의 컴퓨터라는 뜻 $port = '3306'; $dbname = 'php3min'; $charset = 'utf8'; // 대부분 utf8 사용 $username = 'php3min'; $db_pw = "1234"; $dsn = "mysql:host=$host;port=$port;dbname=$dbname;charset=$charset"; $pdo = new PDO($dsn, $username, $db_pw); return $pdo; }
host데이터베이스 서버의 주소port데이터베이스 서버의 포트, MySQL 데이터가 오가는 통로dbname데이터베이스 이름charset인코딩 방법username데이터베이스 사용자 이름db_pw데이터베이스 사용자 비밀번호dsn데이터베이스 연결 문자열PDO객체는 dsn, 사용자 이름, 사용자 비밀번호를 파라미터로 받아 데이터베이스에 연결하는 역할
저장된 값을 가져오는 함수를
db_select()로 정한다.function db_select($query, $param=array()){ $pdo = db_get_pdo(); // MySQL에 접속하는 객체 try { $st = $pdo->prepare($query); $st->execute($param); // 쿼리 실행 $result =$st->fetchAll(PDO::FETCH_ASSOC); // 실행한 데이터 전부 가져오기 $pdo = null; // 객체를 초기화해야 데이터베이스 커넥션이 끊김 return $result; } catch (PDOException $ex) { return false; } finally { // 쿼리가 실패하거나 다른 문제가 생겨도 연결 끊음 $pdo = null; } }
// pdo 객체에서 쿼리를 세팅하면서 statement 객체를 리턴받음 $st = $pdo->prepare($query);StatemenT 객체는 실제로 쿼리를 실행하는 역할이다. 플레이스 홀더(
?/:이름)을 통해 쿼리에 파라미터를 전달한다.
fetch_style
이름 설명 예제 FETCH_ASSOC 연관배열로 데이터를 가져옴. fetchALL(PDO::FETCH_ASSOC) FETCH_CLASS 객체 형태로 데이터를 가져옴. | 기호로 객체 타입 지정함. fetchALL(PDO::FETCH_CLASS | UserDataType) FETCH_OBJ 익명 객체 형태로 데이터를 가져옴. 자동으로 컬럼이 멤버변수화됨. fetchALL(PDO::FETCH_OBJ) FETCH_NUM 순차배열 형태로 데이터를 가져옴. fetchALL(PDO::FETCH_NUM) FETCH_BOTH FETCH_ASSOC + FETCH_NUM fetchALL(PDO::FETCH_BOTH) 쿼리 실패할 경우
false를 반환한다.
DB_SELECT
파라미터가 없는 경우
db_select(쿼리 문자열);형태로 사용한다.db_select("select * from tbl_person");파라미터가 있는 경우
db_select(쿼리 문자열, array(파라미터들));형태로 사용한다.db_select("select * from tbl_person where person_id = ?", array(1))
쿼리에 파라미터를 전달하는 방법
- 쿼리 문자열 안에
?삽입하기db_select("select * from tbl_person where person_id = ?", array(1))위 구문은 아래와 같은 쿼리를 실행한다.
select * from tbl_person where person_id = 1
- 쿼리 문자열 안에
:키삽입하기db_select("select * from tbl_person where person_id = :person_id", array('person_id' => 1))위 구문은 아래와 같은 쿼리를 실행한다.
select * from tbl_person where person_id = 1
function db_insert($query, $param = array()) { $pdo = db_get_pdo(); try { $st = $pdo->prepare($query); $result = $st->execute($param); $last_id = $pdo->lastInsertId(); // 자동으로 설정되는 PK를 가지고 옴 $pdo = null; if ($result) { return $last_id; } else { return false; } } catch (PDOException $ex) { return false; } finally { $pdo = null; } } var_dump( db_insert( "insert into tbl_person (name, age) values (?,?)", array("php", 25) ) ); var_dump( db_insert( "insert into tbl_person (name, age) values (:name,:age)", array("name" =>"php7", "age" => 5) ) );
function db_update_delete($query, $param = array()) { $pdo = db_get_pdo(); try { $st = $pdo->prepare($query); $result = $st->execute($param); $pdo = null; return $result; } catch (PDOException $ex) { return false; } finally { $pdo = null; } } var_dump( db_update_delete( "update tbl_person set age=:age where person_id = :person_id", array("age" => 4, "person_id" => 1) ) ); var_dump( db_update_delete( "delete from tbl_person where person_id = ?", array(3) ) );