CI 묻고 답하기

제목 안녕하세요 초보입니다! $this -> db -> insert_id() 함수가 궁금합니다.
글쓴이 초보프로그래머 작성시각 2014/07/25 21:04:05
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 16762   RSS
레퍼런스에는 데이터베이스에 삽입할 인덱스번호?를 알려준다고 하는것 같은데, 이걸 왜쓰는건가요?

ㅇㅖ로 들어서 어디에 쓰는지...ㅠㅠ
 다음글 공유기 사용으로 인한 Disallowed Key Cha... (1)
 이전글 URL 라우터 질문 (3)

댓글

darkninja / 2014/07/25 21:48:51 / 추천 0
 public function create_comment($original_no) {
  
  //set validation rules
  $this->form_validation->set_rules('subject', 'subject', 'required');
  $this->form_validation->set_rules('contents', 'contents', 'required');
 
  $post_result = $this->post_model->get($original_no);
  //댓글을 달 원글이 존재하는지 확인
  if ($post_result) {
   
   if ($this->form_validation->run() == FALSE) {
    //if not valid
    $this->view($original_no);
   }
   else {
    //if valid
    $subject = $this->input->post('subject');
    $contents = $this->input->post('contents');
    
    $comment_no = $this->comment_model->insert($original_no, $subject, $contents); //댓글저장함
    //$comment_no = $this->db->insert_id();
    //저장한 댓글의 키를 받아 옵니다.
    
    $this->post_model->update_reply_count($original_no, $post_result['reply_count'], 1);
    //원글의 댓글수를 1 증가시킴
    
    //방금 입력한 댓글을 보여줍니다.
    redirect(post/view/' . $original_no.'#comment-'.$comment_no);
   }
  }
  else {
   show_404();
  }
 }
초보프로그래머 / 2014/07/25 21:57:09 / 추천 0
오!! 봐도 모르겠당 헤헤
letsgolee / 2014/07/26 18:37:09 / 추천 0
데이터베이스 테이블에서 각 입력되는 데이터 값을 찾을 수 있도록 설정하는게 시리얼처럼 증가되는 필드가 있습니다. mysql에서는 auto_increment값을 부여하죠. 그리고 그 필드는 대부분 primary key라 설정합니다. 그게 그 테이블에서는 중요 필드가 되는거죠. 

예로 다음과 같은 테이블이 있어요.
create table test (
    id integer primary key,
    name varchar(20)
);

여기다 데이터를 인서트를 합니다.
insert into test values (null, '홍길동');

여기서 id에 해당하는 값은 null을 주어도 자동으로 auto_increment 명령에 의해 최초 1값이 들어가죠. 그리고 데이터를 입력할 때마다 1씩 증가하여 다음 데이터에서는 2값이 주어지겠죠? 그런데 이 값들이 insert id 가 되는 겁니다.

따라서 위의 문장에서 insert_id값은 1이 되고 그 다음 입력되는 데이터에서는 2가 되는 겁니다. 

레퍼런스를 잘 보세요. 삽입할 인덱스 번호가 아니라 삽입되었을 때 사용된 인덱스 번호가 insert_id가 됩니다.