CI 묻고 답하기

제목 CI_DB_postgre_driver 에서 escape_str() 오류
글쓴이 한정우 작성시각 2014/05/15 13:50:17
댓글 : 1 추천 : 0 스크랩 : 0 조회수 : 12495   RSS
모델에서 
$this->db->like("field", '_data'); 로 검색할 때

ESCAPE 문자열이 _ 가 포함된 경우

field like '%!_data% escape '!' 이렇게 되어야 정상인데

field like '%!!_data% escape '!' 처럼 !!가 들어가 버립니다..

CI_DB_postgre_driver 에서 escape_str()  부분을 보면..

            $str = str_replace(    array('%', '_', $this->_like_escape_chr),
                                array($this->_like_escape_chr.'%', $this->_like_escape_chr.'_', $this->_like_escape_chr.$this->_like_escape_chr),
                                $str);

이렇게 되어 있는데 아래처럼 수정해야 할거 같은데요 ?

            $str = str_replace(    array('%', '_'),
                                array($this->_like_escape_chr.'%', $this->_like_escape_chr.'_'),
                                $str);

정확하지가 않아서.. 문의 드립니다.
 다음글 get 방식을 썼을때 url직접 입력을 막는법 (2)
 이전글 nginx 와 CI 연동 문제 (10)

댓글

한대승(불의회상) / 2014/05/15 15:20:58 / 추천 0
DB 코어를 수정하여 사용하는 것 보다 $this->db->where() 문에 직접 기술하여 사용하시는게 좋을것 같습니다.