CI 묻고 답하기

제목 빌더에서 escape 문자 변경
카테고리 CI 4 관련
글쓴이 스노우린 작성시각 2022/05/09 17:07:18
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 4952   RSS

현재 암호화를 복호화하는 과정에서 키값에 등호가 들어가있는 상태입니다. 그런데 ci4에서 자동으로 제공하는 escape 문자가 ! 인데 이걸 변경하지 않으면 !=가 escape의 !대신 다르다의 != 로 인식되는 상황입니다....

else if($where[0] === 'hand'){
            $where[0] = "aes_decrypt(unhex(hand), '$key')";
        }
        $type = gettype($where[1]);
        if($type === 'string'){
            $this->like($where[0],$where[1]);
        }
        else{
            $this->where("$where[0] BETWEEN '{$where[1][0]}' AND '{$where[1][1]}'");
        }

        $data = $this->orderBy("(member.idx) DESC")->limit($this->limit,$this->offset)->find();

어떤 식으로 해결이 가능할까요

 

저번 글에 정확히 명시하지 않아 혼란스러웠던점 한대승님께 죄송합니당....

 다음글 max_execution_time 관련 질문입니다. (1)
 이전글 mysql 쿼리문 (2)

댓글

한대승(불의회상) / 2022/05/09 17:29:27 / 추천 0
!= 대신 <> 를 사용하셔도 됩니다.
스노우린 / 2022/05/09 17:31:41 / 추천 0

한대승

키값에 =가 들어가서 =가 연산자 =로 인식하지 않고 문자 = 로 인식되게 해야합니다.

한대승(불의회상) / 2022/05/10 10:12:00 / 추천 0

$this->like() 네번째 변수에 false를 전달하시면 해당오류 수정 가능합니다.

$this->like($where[0],$where[1], 'both', false);

 

스노우린 / 2022/05/10 13:32:09 / 추천 0

한대승 그렇게 해서 $where[1] = asd 가정할때 %asd%로 들어갑니다.  작은 따옴표가 없어서 쿼리문에 오류가 나왔었습니다.

그래서 both가 아닌 none로 처리하고 

$this->like($where[0],"'%$where[1]%'", 'none', false);

이런식으로 처리했습니다