| 제목 | 특정id 가져와서 수정하는 쿼리 한번 봐주세요 ㅠ | ||
|---|---|---|---|
| 글쓴이 | 하얀당근 | 작성시각 | 2013/06/18 17:05:35 | 
|  | |||
| 이제 코드이그나이터 시작하는 초보입니다. ㅠ 하나씩 따라하고 있는데 db값 수정에서 지금 막혀있네요... model에서 id값을 못 받고 있어요 ㅠㅠ 아래 $topic_id 부분을 어떻게 고쳐야 id값이 들어가나요?? =======<Model>======================================================= function update_exec($title, $description){   $this->db->set('created', 'NOW()', false);   $this->db->update('topic',array(    'title'=>$title,    'description'=>$description   ),array('id' => $topic_id));       <===이 부분   echo $topic_id;   return $this->db->update_id(); } ========<Controller>======================================================= function update_exec(){ .................생략..........................          $topic_id = $this->topic_model->update_exec($this->input->post('title'), $this->input->post('description'));          $this->load->model('topic_model');          redirect('/topic/update/'.$topic_id); .................생략..........................     } | |||
| 다음글 | insert 질문이요` (3) | ||
| 이전글 | CI 도메인별 app관리 관련한 질문입니다. (2) | ||
| 
                                변종원(웅파)
                                /
                                2013/06/18 17:14:35 /
                                추천
                                0
                             | 
| 
                                한대승(불의회상)
                                /
                                2013/06/18 17:24:58 /
                                추천
                                0
                             
                                id 가 $topic_id 일때 update를 하고 싶은 거라면... 아래 처럼 해 주세요. 
$this->db->set('created', 'NOW()', false);
// 추가 할 부분
$this->db->where(array('id' => $topic_id));
// 수정 할 부분
$this->db->update('topic',array(
'title'=>$title,
'description'=>$description
));  | 
| 
                                하얀당근
                                /
                                2013/06/19 13:04:13 /
                                추천
                                0
                             
                                해봤는데 아직 안돼네요 ㅠㅠ 
 function update_exec($title, $description, $id){
  $this->db->set('created', 'NOW()', false);
  $data = array(
               'title' => $title,
               'description' => $description
            );
  $this->db->where('id',$id);
  $this->db->update('topic', $data); 
  var_dump($data);
  echo $this->db->last_query();이렇게 var_dump 랑 마지막 쿼리해보니깐 아래처럼 나오네요 array(2) { ["title"]=> string(4) "1212" ["description"]=> string(6) "121212" } UPDATE `topic` SET `created` = NOW(), `title` = '1212', `description` = '121212' WHERE `id` = 0NULL whre 값이 0으로 계속 나오는데 왜이런지 ㅠㅠ update 페이지에서 히든으로 값을 넘겼습니다. <input type="hidden" name="id" value="<?= $id ?>" /> | 
| 
                                변종원(웅파)
                                /
                                2013/06/19 17:00:13 /
                                추천
                                0
                             
                                컨트롤러에서  $id = $this->input->post('id', true); 로 받아서 모델에 넘겨주신거 맞죠? 컨트롤러에서도 값을 찍어보고 모델에서도 찍어보세요. 값 찍어보면 어디가 문제인지 알 수 있습니다. (아주 기본적인건데요) 쿼리상으로는 0이란 값이 들어가 있습니다. | 
| 
                                한대승(불의회상)
                                /
                                2013/06/19 18:30:33 /
                                추천
                                0
                             
                                ㅎㅎㅎ 복사를 잘못 하셨군요. ^^ 저도 자주 하는 실수중 하나 입니다. 틀림 
$this->db->where(array('id',$id));맞음 
$this->db->where(array('id' => $id)); | 
| 
                                변종원(웅파)
                                /
                                2013/06/19 18:38:40 /
                                추천
                                0
                             
                                 $this->db->where('name', $name);   요게 맞구요 배열로 쓰려면 $this->db->where(array('name'=> $name)); 이렇게 써야합니다. | 
| 
                                한대승(불의회상)
                                /
                                2013/06/20 11:02:29 /
                                추천
                                0
                             
                                앗... 제눈에 뭔가가 씌였군요. 웅파님 지적이 맞습니다. 댓글 수정 할게요. | 
| 
                                하얀당근
                                /
                                2013/06/20 11:31:42 /
                                추천
                                0
                             
                                 해결했습니다 ^^ 모델에서 값을 잘못 넘겨주고 있었습니다  두 분 덕분에 많은 도움되었습니다. 감사합니다.ㅎ 오늘도 좋은 하루 보내세요~ | 
어디 다른데서 불러오는건가요?
컨트롤러
$topic_id = $this->topic_model->update_exec($this->input->post('title'), $this->input->post('description'), $id);
모델
function update_exec($title, $description, $id){