CI 묻고 답하기

제목 Prepared Statements에 대한 궁금한사항입니다.
글쓴이 vkfewv 작성시각 2012/06/13 17:12:02
댓글 : 7 추천 : 0 스크랩 : 0 조회수 : 23639   RSS
CI를 사용하여
웹사이트를 운영중인데요.

실력은 초보입니다.

궁금한게 
보통 이런식으로 쿼리가 구성되서 결과값을 받아서 사용하고 있습니다.(MSSQL 이구요)
$sql = "SELECT 컬럼명 FROM 테이블명 WHERE Code= '$code' "
$rs = $this->mssql->query($sql);

그런데 쿼리를 보낼때 바인딩을 해서 Prepared Statements를 사용하라고 하는데요.

CI에서 개발자로서 할수 있는 작업이 뭐가 있을까요.

제가 너무 둥그렇게 질문한거 같네요.

현재 구글링 등등으로 조사하고 있는데
힌트라도 주시면 감사하겠습니다.

(여기서 많은 정보 얻어가고 있습니다. 감사드린다는점 말씀드릴게요.)
 
 다음글 url에 한글이 들어갈 경우 어떻게 처리를 해야 되는지... (3)
 이전글 나쁜 $_POST 값이 들어온 경우 (6)

댓글

한대승(불의회상) / 2012/06/14 09:49:54 / 추천 0
제가 알기론 CI의 액티브레코드는 Prepared Statements를 사용하지 못하고 있습니다.

혹시 방법을 아시거나 찾아 내신분 있으시면 자료 공유 부탁 드립니다. ^^
도라에몽 / 2012/06/14 10:56:14 / 추천 0
 쿼리바인딩 으로 사용 하시면 됩니다. 

$sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?"; 
$this->db->query($sql, array(3, 'live', 'Rick'));


vkfewv / 2012/06/14 13:53:28 / 추천 0
 브라이언님 불의회상님 답변감사드려요.

브라이언님의 방법으로 하면
Prepared  Statements의 형태로 코딩이 되는거지만, 

DB단 에서는  AD-hoc으로 인식된다고  들었는데,

위 형식으로 구현하면 DB에서도 계속 쿼리가 재사용가능할지 의문이네요.
한대승(불의회상) / 2012/06/14 14:11:20 / 추천 0
$this->db->query($sql, array(3,1,2));

형식으로 사용하면 분명 바인딩은 되지만 액티브레코드 상에서  dinamic query로 바뀌더군요.
아마도 재사용은 불가할 듯 싶습니다.
도라에몽 / 2012/06/14 14:54:42 / 추천 0
액티브레코드를 사용하지 않고 별도로 PDO를 구현해여 사용 하는방법은 어떨런지요?

하지만. PDO를 쓴다면... 
$this->output->enable_profiler(TRUE); 
이 기능을 썼을때 DB내용을 볼 수 없습니다. 물론 코어를 많이 수정하면 가능하겠지만요..ㅎㅎ
(저는 개인적으로  profiler 기능이 CI의 꽃중의 꽃이라 생각하기때문에.. )
부득이한 경우를 제외하고는 CI를 쓰면서 액티브레코드를 쓰지 않는것은.. 비추..입니다. ^^;
도라에몽 / 2012/06/14 15:27:04 / 추천 0
PDO 좋은 예제가 있네요. ^^, 읔;.. CI에서 PDO 지원 하는군요. ;;
http://codeigniter.com/forums/viewthread/218455/
한대승(불의회상) / 2012/06/14 16:37:52 / 추천 0
브라이언// ㅎㅎ 검색 실력의 차이인가요?? ^^
그렇게 찾아도 안보이더니..

예제가 좋기는 한데 사용하기는 좀 불편 하군요.
방법을 찾아봐야지.. ^^