2010-11-22 6 views
1

나는 Mysql 저장 프로 시저와 함께 Kohana 3 프레임 워크를 사용하고 있습니다. 마지막으로 삽입 된 레코드의 ID를 어떻게 얻을 수 있습니까? 다음은 코드입니다 :insert_id in Kohana 3

class Model_MyModel extends Kohana_Model 
{ 
    public function insertNew($param1, $param2) 
    { 
     $result = $this->_db->query(Database::INSERT, 'CALL insertNew('.$param1.', '.$param2.', false)'; 
     return $result; 
    } 
    ... 
    ... 
} 

문서는 말한다, 쿼리() 메서드는 삽입 쿼리를 실행 마지막으로 삽입 된 ID와 영향을받는 행 수와 배열을 반환합니다. 내가 전화 할 때 : 인 print_r ($ 결과) 내가 받고 있어요 : 배열 을 ( [0] => 0 [1] => 1 ) 나는 많은 기록을 데 불구하고 INSERT_ID 키가 0 db. 내가 뭘 잘못하고있어?

+1

프로 시저를 사용했기 때문에 insert_id를받지 못하는 이유는 Database :: INSERT에서 SQL을 올바르게 실행하려고 시도한 적이 있습니까? – mikelbring

+0

이것은 스크립트에서 sql을 빌드 할 때 작동합니다. 그러나 여기에 프로 시저를 호출하는 방법은 없습니까, 아니면 절대 불가능합니다 ... – skog

답변

1

나는 당신이 절차를 사용하여 삽입 한 후 SQL의 LAST_INSERT_ID()를 사용해야 할 것 같아요 :

SELECT LAST_INSERT_ID() as last_insert_id FROM table_name 

가 (프로 시저 단지 결국이 쿼리를 정의).

이 경우 Kohana는 Database :: INSERT에 대한 결과로 mysql_insert_id 및 mysql_affected_rows를 자동으로 반환하므로 프로 시저를 SELECT 쿼리로 호출하여 가져와야합니다 (Database :: SELECT).

+0

고마워, 고정 -) – skog