질문 Q #10262
or_like 질문입니다.
템포 2013-01-11 18:13:45
쿼리 문제상

like 쓰고 or like를 써서 조인을 하는데요

or을 걸어버리니

where .... 컬럼 LIKE '%test%' escape '!' OR 컬럼2 LIKE '%te%' escape '!'  이렇게 하면 데이터가 안나오구

where .... 컬럼 LIKE '%test%' escape '!' OR 컬럼2 LIKE '%%' escape '!'  이렇게 하면 다른 WHERE 조건 절 무시하고
모든 데이터가 나옵니다.

쿼리할때보면

OR쓸때 () 괄호 해서 우선연산자 쓰는것도 있던걸로 기억하는데 CI에서 사용가능한가요?

DB는 오라클 DB 사용중입니다.


답변 5
#1 변종원(웅파) 2013-01-11 18:21:45
 sql문으로 작성하셔야 합니다. ^^
where 부분만 sql문으로 작성해서 쓰시면 됩니다.
#2 템포 2013-01-11 18:26:36
웅파님 답변 감사합니다
like절이 or조건절인데 like절을 따로 sql문 쓰는게 아니라
where 조건절을 따로 쓰는건가요 ?
#3 한대승(불의회상) 2013-01-11 18:57:29
템포// $this->db->where() 를 사용하라는 뜻입니다.

$this->db->where("컬럼 LIKE '%test%' escape '!' OR 컬럼2 LIKE '%te%' escape '!' ", NULL, FALSE);
로 사용하시면 됩니다.
#4 니삼 2013-01-11 19:46:40
 직접 sql문을 쓰시니까 sql injection같은 공격에도 충분히 대비하시길~
#5 템포 2013-01-14 08:59:51
답변 감사들합니다~
아 그런뜻이었군요..
저는 $q = $this->db->last_query 해서
where절을 "sql문..."으로 작성했었네요 ;;

불의회상님 덕분에 코드를 줄이게 됐네요 감사합니다ㅎ