Kohana 3 中的 insert_id
我正在使用 Kohana 3 框架和 Mysql 存储过程。如何获取最后插入的记录的 id? 代码如下:
class Model_MyModel extends Kohana_Model
{
public function insertNew($param1, $param2)
{
$result = $this->_db->query(Database::INSERT, 'CALL insertNew('.$param1.', '.$param2.', false)';
return $result;
}
...
...
}
文档说,执行插入查询时,query() 方法返回一个数组,其中包含最后一个插入 id 和受影响的行数。当我打电话时: print_r($result) 我得到: 大批 ( [0] => 0 [1] => 1 ) insert_id 键为 0,尽管我在数据库中有很多记录。 我做错了什么?
I'm using Kohana 3 framework with Mysql stored procedures. How can I get id of the last inserted record?
Here's the code:
class Model_MyModel extends Kohana_Model
{
public function insertNew($param1, $param2)
{
$result = $this->_db->query(Database::INSERT, 'CALL insertNew('.$param1.', '.$param2.', false)';
return $result;
}
...
...
}
Documentation says, the query() method returns an array with the last insert id and affected rows number, when executing an insert query. When I call: print_r($result)
I'm getting:
Array
(
[0] => 0
[1] => 1
)
The insert_id key is 0, though I'm having many records in the db.
What I'm doing wrong?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我认为在使用过程插入后,您必须使用 SQL 的
LAST_INSERT_ID()
:(在您的过程中最后定义此查询)。
本例中的问题是 Kohana 自动返回 mysql_insert_id 和 mysql_affected_rows 作为 Database::INSERT 的结果,因此您需要将该过程作为 SELECT 查询调用并获取它 (Database::SELECT)。
I think you'll have to use SQL's
LAST_INSERT_ID()
after inserting using a procedure:( in your procedure just define this query in the end ).
The problem in this case is that Kohana automatically returns mysql_insert_id and mysql_affected_rows as result for Database::INSERT, so you'll need to call the procedure as a SELECT query and fetch it (Database::SELECT).