CI 묻고 답하기

제목 sysdate사용시 질문입니다.
글쓴이 수야디벨 작성시각 2013/03/04 11:51:40
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 18380   RSS

만약 DB에서 현재 시간을 가져오고 싶다면,

$this->db->select('sysdate() as  sysdate');

이런식으로 sysdate를 셀렉트 하라. 라고 조언받은적이 있습니다.

그런데, DB에서 sysdate만 사용할게 아니잖아요?

만약에, 컬럼이 A / B / C 가 있다고 한다면,

위 처럼 $this->db->select('sysdate() as sysdate');  를 사용한다면, 오로지 sysdate값만 선택되어,

다른 컬럼은 쓸 수가 없습니다. (당연한거지요 이건?^^;)

그래서, 아주아주 번거롭지만 여태까지 ...

$this->db->select('A');
$this->db->select('B');
$this->db->select('C'); 
$this->db->select('sysdate() as sysdate');

이렇게 모든 컬럼을 다 지정해줬거든요~

위 식을 간소화할 수 있는 방법이 없을까요?

 다음글 썸네일 이미지 만들경우. (2)
 이전글 파일업로드 오류 (2)

댓글

kirrie / 2013/03/04 15:33:21 / 추천 0
sysdate()와 같이 DB 함수를 이용하려면 codeigniter의 active record가 기본적으로 지원하는 escaping을 off 시켜야 합니다. 

$this->db->select('sysdate() as sysdate', false);
$this->db->select('a, b, c, d, e');

이렇게 두 번의 select 메소드를 사용해주세요.

( http://ellislab.com/codeigniter/user-guide/database/active_record.html#select
이 메뉴얼의 select() 부분을 참조. )
수야디벨 / 2013/03/04 16:46:49 / 추천 0
kirrie//

결국에는 일일이 컬럼을 셀렉트 해줘야 한다는 점에선 동일하네요.

그런데, false를 해주지 않아도 지금까지 문제가 없이 사용되었는데,

이는 어떻게 설명할 수가 있을까요?
kirrie / 2013/03/04 17:34:25 / 추천 0
sysdate()를 쓰는걸 보니 오라클을 사용하시는 것 같습니다. 제가 지금 오라클 환경이 아니라
확인해 볼 수 없는데 오라클은 escaping을 해도 함수를 그대로 함수로 인식한다거나 하는게 아닐까요?

만약 sysdate() as sysdate가 escaping해도 정상적으로 사용할 수 있다면 그냥

$this->db->select('sysdate() as sysdate, a, b, c, d, e');

이렇게 사용하셔도 됩니다.
수야디벨 / 2013/03/05 20:16:55 / 추천 0
kirrie//

감사합니다 :)