CI 묻고 답하기

제목 Model 단에서 INSERT, UPDATE, DELETE 사용시 질문입니다!
카테고리 CI 2, 3
글쓴이 도롱뇽이 작성시각 2017/09/01 10:59:42
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 13165   RSS

public function board_search2($h_seq, $h_user_id)

{

/* 게시물 조회수 update 처리 로직 */
$this->db->set("VIEW_CNT",VIEW_CNT+1);
$this->db->where("SEQ", $h_seq);
$this->db->where("USER_ID", $h_user_id);
$this->db->update("BOARD_TB");
 
/* 게시물 관련 내용 select 처리 */
$qry = "SELECT SEQ, TITLE, CONTENTS, USER_ID, VIEW_CNT FROM BOARD_TB WHERE SEQ='".$h_seq."' AND USER_ID='".$h_user_id."'";
return $this->db->query($qry)->result_array();
}

 

일단, board_search2() 모델단에 적용해놓은 update + select 처리 로직입니다!

저기서 update 로직을 쌩짜 쿼리로 풀면 

 

UPDATE BOARD_TB SET VIEW_CNT=VIEW_CNT+1 WHERE SEQ='$h_seq' AND USER_ID='$h_user_id'  가 되는건데..

 

여기서 CI에서 제공하는 $this->db->set 이나 $this->db->where 를 사용하지않고

쿼리를 제가 직접 입력하여 자체적으로 쿼리를 돌리고 싶습니다.. 시도해본건

$query = "UPDATE BOARD_TB SET VIEW_CNT=VIEW_CNT+1 WHERE SEQ='$h_seq' AND USER_ID='$h_user_id'";

$this->db->update($query); 입니다만.. 작동방식이 잘못된건지

 

A Database Error Occurred

You must use the "set" method to update an entry.

Filename: C:/APM_Setup/htdocs/system/database/DB_query_builder.php

Line Number: 1848

 

이러한 에러가 나버리네요 ㅠㅠ 아무래도 CI 제공 함수사용에 불편함을 느껴서 그런지.. 쿼리문 작성을 하는데 있어 직접 작성이

좀 더 가독성이 좋다고 판단되어 쿼리문을 직접 작성하고 그걸통해 insert, update, delete 처리를 해버리고 싶습니다.. 

제가 시도한 방법이 잘못된거라면 따로 시도 가능한 방법이 있는건지 궁금합니다..!

 

 

더불어, 사실 이런 질문을 올리게 된 이유는 $this->db->set("VIEW_CNT","VIEW_CNT+1"); 구문을 이렇게 작성하여 사용하니 

VIEW_CNT 를 STRING 그대로 VIEW_CNT+1 로 쳐버리더군요..

그래서 $this->db->set("VIEW_CNT",VIEW_CNT+1); 구문을 이렇게 쌍따옴표를 없애보니..

VIEW_CNT 항목을 1로 UPDATE 치기까진 하는데..

 

/* 게시물 관련 내용 select 처리 */
$qry = "SELECT SEQ, TITLE, CONTENTS, USER_ID, VIEW_CNT FROM BOARD_TB WHERE SEQ='".$h_seq."' AND USER_ID='".$h_user_id."'";
return $this->db->query($qry)->result_array();

이렇게 작성해놓은 SELECT 문이 아래 에러메세지를 뿌리면서 정상작동하지 않습니다.. ㅠ

 

A PHP Error was encountered

Severity: Notice

Message: Use of undefined constant VIEW_CNT - assumed 'VIEW_CNT'

Filename: models/Cafe_model.php

Line Number: 69

Backtrace:

File: C:\APM_Setup\htdocs\application\models\Cafe_model.phpLine: 69Function: _error_handler

File: C:\APM_Setup\htdocs\application\controllers\Music_Cafe.phpLine: 98Function: board_search2

File: C:\APM_Setup\htdocs\index.phpLine: 315Function: require_once

 

 

간단히 요약하여 질문 드립니다 ㅠㅠ

1. 직접 작성한 쿼리문으로 UPDATE, INSERT, DELETE 문을 처리할 수 있는 방법이 있는지..

2. $this->db->set() / $this->db->where() / $this->db->update() 처리를 할 때

$this->db->set()이나 $this->db->where() 구문에  AA = AA+1 같은  쿼리문을 셋팅할 수 있는 방법이 따로 있는지 궁금합니다..

 다음글 페이지네이션 마지막 페이지 질문입니다. (3)
 이전글 URL 관련 문의 (9)

댓글

한대승(불의회상) / 2017/09/01 12:48:01 / 추천 0

1. $this->db->query() 를 사용하세요.

2. $this->db->set('a', 'a+1', false) , $this->db->where('a', 'a+1', false) 를 사용하세요.

메뉴얼에 보시면 명시되어 있습니다.

도롱뇽이 / 2017/09/01 13:10:09 / 추천 0

대승님 댓글 감사합니다 ㅠㅠ!

한번 해보도록 하겠습니다!!