이전까지는 쿼리문이 단순해서 조건문이 없었습니다만, 조금 더 세밀한 결과를 얻기 위해선 조건문이 들어가고 해당 조건문에 변수를 이용해 쿼리문을 작성해야 할 경우가 있을것입니다.
쿼리문에 변수를 넣는 방법은 직접 변수를 대입하는 리터럴과 변수가 들어갈 부분에 "?" 나 :VAR 할당하여 쿼리를 만들고 변수 별도로 할당하여 실행하는 바인딩이 있습니다.
일반적으로 바인딩을 사용하는것이 쿼리캐시나 SQL 인젝션 공격 방어 등에 유리하다고 알려져 있습니다.
1. 리터럴
$user_id = 'bidam';
$query = " Select * From member Where user_id = 'bidam' And user_name = '비담' ";
$this->Dao->execute($query);
$query = " Select * From member Where user_id = 'bidam' And user_name = '비담' ";
$this->Dao->execute($query);
리터럴은 변수를 쿼리문에 직접 대입하여 작성합니다.
위 쿼리문을 바인딩으로 처리하는 방법은 아래와 같이 두가지 방법이 있습니다.
아래 두 가지 방법은 사용법만 다를 뿐 작동 원리는 같습니다.
2. 바인딩(1)
$query = " Select * From member Where user_id = ? And user_name = ?";
$param = array("bidam","비담");
$this->Dao->execute($query,$param);
3. 바인딩(2)
$query = " Select * From member Where user_id = :user_id And user_name = :user_name";
$param = array("user_id"=>"bidam","user_name"=>"비담");
$this->Dao->execute($query,$param);
위 바인딩 관련 메소드는 Mysql 4.1 이상 버전에서 지원됩니다.
'Spac 매뉴얼 > MySQL Dao' 카테고리의 다른 글
예제4 : 뷰를 이용한 DB 데이터의 출력 (0) | 2009.11.20 |
---|---|
예제3 : 데이터의 조회 (0) | 2009.11.18 |
예제2 : 테이블 생성 및 조회 (0) | 2009.11.18 |
예제1 : Database Connection (0) | 2009.11.16 |
Spac Dao for Mysql Ver 9.0629 (0) | 2009.11.14 |