2010-11-22 94 views
1

我使用Kohana 3框架与Mysql存储过程。我怎样才能得到最后插入的记录的ID? 下面的代码:在Kohana 3 insert_id 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和受影响的行数,执行INSERT查询时的数组。当我打电话:的print_r($结果) 我发现了: 阵列 ( [0] => 0 [1] => 1 ) 的INSERT_ID键为0,虽然我具有多条记录分贝。 我做错了什么?

+1

你没有得到insert_id的原因是你使用了一个过程,你有没有试过在Database :: INSERT中执行SQL的权利? – mikelbring 2010-11-22 22:16:25

+0

它在脚本中生成sql时有效,谢谢。但是,是不是有办法在这里调用一个程序,或者这是绝对不可能的? – skog 2010-11-23 07:05:16

回答

1

我认为你将不得不使用SQL的LAST_INSERT_ID()使用过程中插入后:

SELECT LAST_INSERT_ID() as last_insert_id FROM table_name 

(在你的程序中只定义到底这个查询)。

这种情况下的问题是Kohana会自动返回mysql_insert_id和mysql_affected_rows作为Database :: INSERT的结果,因此您需要调用该过程作为SELECT查询并获取它(Database :: SELECT)。