개발 Q&A

제목 sql간단한거 질문드립니다.
글쓴이 jackie 작성시각 2016/04/06 10:53:12
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 10647   RSS

$id=13,15,17,19,20

    public function get_ids($id){      $query = '  SELECT  *  FROM  news  WHERE   rss_rss_id  IN  ('.$id.')';

      return $this->db->query($query)->result();    }

이렇게 직접 넣으면 잘 작동하는데요

    public function get_ids($id){      $query = '  SELECT  *  FROM  news  WHERE   rss_rss_id  IN  (?)';

      return $this->db->query($query,$id)->result();    }

이렇게 프리페어드 쿼리 하면 id=13일때 것만 되는데요.

무슨 문제가 있을까요???

 

 다음글 팝업 이미지 깨지는 현상 (1)
 이전글 맥북에 추천할 PHP 개발툴 ? (9)

댓글

배강민 / 2016/04/06 11:00:50 / 추천 1

바인딩을 하면

IN ('13,15,17,19,20') 이렇게 커테이션이 씌워지게 되서 그렇습니다.

프로파일러를 출력해보시면 두개의 쿼리가 다를겁니다.

jackie / 2016/04/06 11:39:33 / 추천 0
그럼 '<- 상쇄시키려면 어떻게 해야할까요??// 일단 검색해보겠습니당!
kaido / 2016/04/06 11:58:08 / 추천 0

@jackie

$sql = "INSERT INTO table (title) VALUES(".$this->db->escape($title).")";

이스케이프 문을 같이 넣어주시면 더욱 안전 합니다. [그와 동시에 고민도 같이 해결]

액티브레코드로 작성 하시면 자동으로 이스케이프가 들어갑니다.