Database Database 사용 방법을 안내합니다.

확인해 주세요

PDO 를 사용하므로 PHP에 PDO 모듈이 설치되어 있어야 합니다.

사용 준비

Database를 사용하기 위해선 아래와 같이 Controller 최상단에 use 가 선언 되어야 합니다.
Controller /app/test.php
<?php
use Make\Database\Pdosql;
Query를 수행하기 위해 새로운 인스턴스를 생성합니다.
Controller /app/test.php
<?php
use Make\Database\Pdosql;

...

$sql = new Pdosql();

Table 존재 유무 확인

특정 명칭으로 table이 이미 생성되어 있는지 table_exists() 를 통해 검사합니다.
Controller /app/test.php
<?php
use Make\Database\Pdosql;

...

$sql = new Pdosql();

$is_table = $sql->table_exists($sql->table("member"));

if ( $is_table === true ) {
    ...
}
위와 같이 table의 존재 유무를 확인할 수 있으며, 존재하는 경우 true 를 반환하고, 존재하지 않는 경우 false 를 반환합니다.

Query 실행

특정 table로 부터 select, insert, update, delete 등의 record 관리를 위해 query() 를 사용합니다.
Controller /app/test.php
<?php
use Make\Database\Pdosql;

...

$sql = new Pdosql();

$sql->query(
    "
    INSERT INTO {$sql->table("member")}
    (mb_name, mb_phone, mb_address)
    VALUES
    (:col1, :col2, :col3)
    ",
    array(
        $mb_name, '010-1234-5678', $mb_address
    )
);
위와 같이 table 에서 query 할 수 있으며, 구문에서 :col1, :col2 와 같이 컬럼을 bind 할 수 있습니다.
insert시 주의사항

bind를 통해 DB에 insert 하는 경우 자동으로 따옴표, 특수문자 등에 이스케이프(Escape) 처리를 합니다.
만약, bind 없이 쿼리에서 직접 컬럼 값을 대입하는 경우 반드시 이스케이프 처리후 insert해야 합니다.

Fetch 사용

Select Query 수행 후 특정 칼럼을 Fetch 할 수 있습니다.
Controller /app/test.php
<?php
use Make\Database\Pdosql;

...

$sql = new Pdosql();

$sql->query(
    "
    SELECT *
    FROM {$sql->table("member")}
    WHERE mb_idx=:col1 AND mb_dregdate IS NULL
    ",
    array(
        MB_IDX
    )
);

$mb_id = $sql->fetch('mb_id');
fetch() 를 사용하여 특정 단일 컬럼 정보를 fetch 할 수 있으며, 아래와 같이 fetchs() 로 색인된 모든 컬럼을 가져올 수도 있습니다.
Controller /app/test.php
<?php
use Make\Database\Pdosql;

...

$sql = new Pdosql();

$sql->query(
    "
    SELECT *
    FROM {$sql->table("member")}
    WHERE mb_idx=:col1 AND mb_dregdate IS NULL
    ",
    array(
        MB_IDX
    )
);

$arr = $sql->fetchs();
$mb_id = $arr['mb_id'];
$mb_nick = $arr['mb_name'];

Fetch시 htmlspecialchars() 및 nl2br() 비활성화

Fetch 를 수행하는 경우 기본적으로 htmlspacialchars() 와 nl2br() 이 적용되지만,
적용을 원치 않는 경우 아래와 같은 방법으로 비활성화 할 수 있습니다.
Controller /app/test.php
<?php
use Make\Database\Pdosql;

...

$sql = new Pdosql();

$sql->query(
    "
    SELECT *
    FROM {$sql->table("member")}
    ", []
);

$sql->specialchars = 0;
$sql->nl2br = 0;

$arr = $sql->fetchs();

다수 레코드 색인

Select Query 수행 후 여러 레코드의 컬럼 정보를 while을 통해 Fetch 합니다.
다음 레코드를 색인하는 nextRec() 를 통해 색인된 레코드를 순차적으로 Fetch 할 수 있습니다.
Controller /app/test.php
<?php
use Make\Database\Pdosql;

...

$sql = new Pdosql();

$sql->query(
    "
    SELECT *
    FROM {$sql->table("member")}
    ", []
);

do {
    $arr = $sql->fetchs();
    $mb_id = $arr['mb_id'];

} while($sql->nextRec());

검색된 레코드 개수 반환

Select query로 검색된 레코드의 개수를 getcount() 를 통해 반환 합니다.
Controller /app/test.php
<?php
use Make\Database\Pdosql;

...

$sql = new Pdosql();

$sql->query(
    "
    SELECT *
    FROM {$sql->table("member")}
    ", []
);

$total_count = $sql->getcount();

다음 레코드 색인

현재 레코드의 다음 레코드를 색인하여 위치 시킵니다.
Controller /app/test.php
<?php
use Make\Database\Pdosql;

...

$sql = new Pdosql();

$sql->query(
    "
    SELECT *
    FROM {$sql->table("member")}
    ", []
);

$sql->nextRec();

Database 즉시 종료

사용자가 웹페이지를 떠나면 자동으로 Database가 종료 되지만, 연결된 Database 를 즉시 종료할 수도 있습니다.
Controller /app/test.php
<?php
use Make\Database\Pdosql;

...

$sql = new Pdosql();

$sql->close();