CI 묻고 답하기

제목 액티브 레코드 실행 후 결과
카테고리 CI 2, 3
글쓴이 주말생각 작성시각 2021/02/05 13:32:12
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 9299   RSS

액티브 레코드 중에서 $this->db->update();을 사용하고 나서 쿼리가 제대로 실행했는지를 판별하기 위해서

쿼리 헬퍼 중에서 $this->db->affected_rows()을 사용하여 아래와 같은 코드를 작성하였습니다.

 

$data = ["id"=>$ID];

$this->db->where('ndx', $ndx);

$this->db->update('book', $data);

$rest = $this->db->affected_rows();

if(  empty($rest)  ){

  echo "실패";

  exit;

}

그런데 업데이트가 제대로 이루어져도 $rest가 0으로 나와서 echo "실패";가 출력이 되네요.

+보내는 값을 제가 제대로 안해서 생긴 오류였습니다. 그런데 변경하려는 id가 기존 DB에 있으면 업데이트가 실패하면서 에러페이지가 뜨는데 이것을 에러페이지를 보여주지 않고 alert로 "아이디 변경 실패"로 처리하고 싶은데 방법이 있을까요?

 다음글 redirect 시 주소창에 index.php 뜨는것 ... (2)
 이전글 post 전송시 utf8 깨짐현상 (3)

댓글

한대승(불의회상) / 2021/02/05 13:33:30 / 추천 0

업데이트는 그냥 true로 처리하셔도 됩니다.

있으면 업데이트 될것이고, 없으면 안되니까요.

그런 맥락으로 보면 delete도 동일합니다.

주말생각 / 2021/02/05 13:55:16 / 추천 0

@한대승(불의회상) 

업데이트는 그냥 true로 처리하셔도 됩니다.라는 말씀이

$res = $this->db->update('book', $data);

if( $res != true ) {

eho "실패";

exit;

}

를 말씀하시는 건가요?

엽토군 / 2021/02/06 22:17:40 / 추천 0

새로 업데이트된 질문은 정말 오래된 문제인데.. 해당 컨트롤러가 최종적으로 해야 하는 것이 echo 라면

if (!$updated) {
    echo '<script>alert("업데이트 실패!"); window.history.back();</script>';
    exit;
}

만 실행하셔도 될겁니다.