CI 묻고 답하기

제목 액티브 레코드에 MySQL 함수를 쓰려면 어떻게 해야될까요?
글쓴이 정민스 작성시각 2010/06/10 13:16:06
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 28926   RSS
$frm_data = array(
                'uid'  => $_POST['id'],
                'atype' => $_POST['jtype'],
		'acode' => $acode,
		'aname' => $aname,
		'status' => 2,
		'auth' => $_POST['auth'],
		'uname' => $_POST['name'],
위와 같이 배열을 정의하여

$this->db->insert("tbl_member", $frm_data);

데이터를 Insert 합니다.

근데. Password 항목이 있어서, MySQL Password 를 적용하고 싶습니다.

'passwd' => "PASSWORD('" . $_POST['passwd1'] . "')",

이렇게 집어 넣었더니.. PASSWORD('password")

와 같이 그냥 문자열로 인식하더군요... 저걸 또 다 쿼리로 바꾸려면 -_-;;; ㅎㄷㄷ

방법이 없을까요~?
 다음글 궁금한게 있습니다. 위젯 관련. (3)
 이전글 싸이트 접속시 디폴트 페이지 (2)

댓글

mycastor / 2010/06/10 13:32:03 / 추천 0

엑티브 레코드를 쓰지 않아서 메뉴얼을 한번 찾아봤는데

INSERT문의 경우는 값에 대해 자동으로 이스케이프 처리를 한다고 나와있네요.

엑티브 레코드로 생성된 쿼리에서 이스케이프한 부분에 대하여 치환하는 수밖에 없을거 같네요.

이러면 더 복잡해질수가 있기 때문에 차라리 바인딩을 사용하시는게 어떨까요?

쿼리 바인딩도 자동으로 이스케이프 처리 하기 때문에 보안에 좋습니다.

저는 조인하고 서브쿼리를 하는 경우가 많아서.. 엑티브레코드를 쓰려니 너무 복잡하더라구요..

앤드그리고 / 2010/06/10 13:55:03 / 추천 0
$this->db->set('field', $value, false);
$this->db->set($array);
$this->db->insert('table');
를 이용해 보세요... 
참고 : http://codeigniter-kr.org/user_guide/database/active_record.html#insert
변종원(웅파) / 2010/06/10 13:55:49 / 추천 0
아래에 비슷한 질문이 있습니다. http://codeigniter-kr.org/qna/view/2991/page/1 

조영운님 답변대로 set에서 escape처리하지 않고 보내면 됩니다.
매뉴얼(http://codeigniter-kr.org/user_guide/database/active_record.html#insert)에서 $this->db->set(); 부분 참고하세요.
mycastor / 2010/06/10 14:03:22 / 추천 0
음.. 안하고 하는 방법이 있었네요~~~~~

하나 배워갑니다..

즐거운 코딩되세요~~~~~~