[DB] 사용 가이드

DB Prepare Statement 바인딩 가이드

사용 예시

// db 모듈 호출
$db = \App::getInstance('DB');

// bind 할 배열 생성
$arrBind = [];

// prepare statement query 생성
$query = "SELECT COUNT(*) as cnt FROM "
    . CUSTOM_TABLE 
    . " WHERE sno = ? AND customColumn = ?";

// 데이터 바인딩
// 첫 번째 ?에 $customSno가 바인딩됩니다 (정수)
$db->bind_param_push($arrBind, 'i', $customSno);
// 두 번째 ?에 $customColumn가 바인딩됩니다 (문자열)
$db->bind_param_push($arrBind, 's', $customColumn);
// 쿼리 실행
$result = $db->query_fetch($query, $arrBind, false);
unset($arrBind);

return $result['cnt'];

DB Prepare Statement 바인딩 사용 방법

  • 쿼리문 내에서 바인딩이 필요한 값은 ?로 표시해 주시기 바랍니다.

  • 각 ?에는 bind_param_push로 추가한 값이 입력 순서대로 차례로 바인딩됩니다.

    • 예를 들어, 첫 번째 bind_param_push의 값은 쿼리의 첫 번째 ?에, 두 번째 값은 두 번째 ?에 바인딩됩니다.

  • 파라미터는 $db->bind_param_push($arrBind, '타입', $값); 형태로 바인딩 배열에 추가해 주시면 됩니다.

  • 쿼리 실행 시에는 $db->query_fetch($query, $arrBind, false);와 같이 바인딩 배열을 함께 전달해 주세요.

  • 바인딩 타입은 아래 표를 참고하여 데이터 타입에 맞게 지정해 주시기 바랍니다.

  • 이 방식을 사용하시면 SQL 인젝션을 효과적으로 방지할 수 있으며, 코드의 가독성과 유지보수성도 높아집니다.

바인딩 타입 표

타입
설명

i

int(정수)

d

float(실수)

s

string(문자열)

b

blob(이진 데이터, 패킷 단위로 전송)

Last updated

Was this helpful?