| 제목 | insert_id 질문 좀 드릴게요 | ||
|---|---|---|---|
| 글쓴이 | implemental | 작성시각 | 2014/10/06 17:21:48 | 
|  | |||
| 안녕하세요. 프로젝트 도중 어쩔 수 없이 회원 가입을 하기 위해서는 3개의 테이블에 insert해야 되는 상황이라서 $this->db->insert_id(); 를 이용하는 중입니다. 먼저 table1에 pk이자 ai 값인 user_id라는 컬럼이 있다 가정을 하고 아래와 같이 했는데요 
        $data1 = array(
            'user_id' => $this->input->post('user_id'),  //pk, ai
            ...생략
            );
        $this->DB1->insert('table1', $data1);
        
        $data2 = array(
            'user_id' => $this->DB1->insert_id(),  //pk, ai
            ...생략
            );
        $this->DB1->insert('table2', $data2);
        
        $data3 = array(
            'table3_id' => $this->input->post('table3_id"); //pk, ai  
            ...생략
            'xx_member_id' => $this->DB1->insert_id(),   //pk, ai 아님
            ); 
        $this->DB1->insert('table3', $data3);    (table2의 pk도 user_id입니다. 하지만 table3의 pk는 다른 컬럼입니다.) table1과 2의 user_id라는 컬럼은 동일한 컬럼명으로 되어있고 table3은 다른 이름으로 되어있습니다. $this->output->enable_profiler(TRUE); 찍어보니까 table2에는 정상적으로 insert_id()가 동작을 하는데, table3에는 0이 찍히더군요.. insert_id를 2개이상 사용하려면 어떻게 하면 될까요? | |||
| 다음글 | codeigniter 트랜잭션에서 롤백 시 오류가 되는... (2) | ||
| 이전글 | ajax 질문좀 드리겠습니다. (6) | ||
| 
                                변종원(웅파)
                                /
                                2014/10/06 17:51:30 /
                                추천
                                0
                             | 
| 
                                implemental
                                /
                                2014/10/07 09:47:38 /
                                추천
                                0
                             
                                @웅파님 / 저도 퇴근하고 머리 식히면서 보니  말씀대로 AI가 적용되야 값을 가져오네요.  일단 꼼수로 해결을 했습니다. table3만 다르게 하는 이유는 웹이 아닌 프로그램에서 그렇게 사용을 하고 있어 어쩔 수 없이 이렇게 해야 되서 질문 올렸던거에요 :D 꼼수는 아래와 같이 $data1 먼저 insert 하고 마지막에 $data2, $data3 을 같이 해주니 정상적으로 동작을 하네요 ^^; 
$data1 = array(
    'user_id' => $this->input->post('user_id'),  //pk, ai
    ...생략
    );
$this->DB1->insert('table1', $data1);
$data2 = array(
    'user_id' => $this->DB1->insert_id(),  //pk, ai
    ...생략
    );
$data3 = array(
    'table3_id' => $this->input->post('table3_id"); //pk, ai  
    ...생략
    'xx_member_id' => $this->DB1->insert_id(),   //pk, ai 아님
    ); 
$this->DB1->insert('table2', $data2);
$this->DB1->insert('table3', $data3);    | 
function insert_id() { return @mysql_insert_id($this->conn_id); } 혹시 두번째 테이블의 user_id가 big int는 아닐지요? big int형이면 값을 못가져옵니다. 검색해보니 autoincrement가 적용되어야 값을 가져오네요. 보통 3개의 테이블에 넣는다 하더라도 table1의 id를 키로 사용하는데 table3만 다르게 해야하는 이유가 있을까요? http://php.net/manual/kr/function.mysql-insert-id.php