CI 묻고 답하기

제목 ci3 -> ci4 버퍼링 개선에 대해 질문있습니다.
카테고리 CI 4 관련
글쓴이 holiclong 작성시각 2025/04/14 17:44:48
댓글 : 0 추천 : 0 스크랩 : 0 조회수 : 191   RSS

안녕하세요, 개발을 시작한지 얼마안돼서 잘모르는게 있어 질문 드립니다.

제가 기존 ci3작업을 하다가 쿼리문 사용시 일반적으로

$this->db->query($sql, array($param1, $param2)) 이런식으로 사용했었습니다.

 

그런데 이런식으로 사용시 간혹 프로시저를 호출했을때 모델에서 쿼리문을 한번 더 사용하면

Query error: Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.

위 오류가 났었습니다.

 

그래서 $query = $this->db->conn_id->prepare($sql)

$query->bindParam(1, $param1);

$query->bindParam(2, $param2);

$query->execute();

$result = $query->fetchAll();

이런식으로 fetchAll을 사용해서 unbuffered에서 buffered로 변경하니 괜찮더라구요.

사실 위에 설명한것도 최대한 찾아보긴했는데 잘 설명하고 있는지도 모르겠네요..

 

그래서 이번에 ci4로 변경하면서 위같은 방식으로 쿼리문을 사용하려니 conn_id가 없더라구요

혹시 ci4버전에서는 fetchAll을 사용안하더라도 buffered 오류가 안뜨게 개선이 됐나요?

오류나던걸 ci4에서 사용해보니 또 오류가 안나더라구요..

 

혹은 fetchAll사용법을 아신다면 알려주셨으면 좋겠습니다.

 이전글 Codeigniter 3 session_start() ... (4)

댓글

없음