zend框架使用execute获取多行插入的最后一个插入id

时间:2010-01-19 14:15:32

标签: zend-framework insert-id

如何使用multirow插入获取最后插入的ID? 这是我的代码:

$sql='INSERT INTO t (col1, col2, col3) VALUES (1, 2, 3), (4, 5, 6), (7, 8, 9)'; // example
$stmt = $contactsTable->getAdapter()->prepare($sql);
$stmt->execute(); 
$rowsAdded=$stmt->rowCount(); // mysql_affected_rows
$lastId=$stmt->lastInsertId();
echo '<br>Last ID: '.$lastId;

此外,ZF中是否有一个方法可以在插入之前获取下一个插入ID?

感谢

4 个答案:

答案 0 :(得分:10)

$lastId=$contactsTable->getAdapter()->lastInsertId();

这很有用。

答案 1 :(得分:3)

所以,这是我正在使用的完整工作代码来创建多行插入,添加行和最后插入的id:

$contactsTable = new Contacts_Model_Contacts();
$sql='INSERT INTO t (col1, col2, col3) VALUES (1, 2, 3), (4, 5, 6), (7, 8, 9)'; // example
$stmt = $contactsTable->getAdapter()->prepare($sql);
$stmt->execute(); 
$rowsAdded=$stmt->rowCount(); // mysql_affected_rows
$lastId=$contactsTable->getAdapter()->lastInsertId(); // last inserted id
echo '<br>Last ID: '.$lastId;

答案 2 :(得分:2)

另一种解决方案。从控制器移出sql代码并将它们放在模型中。这就是它们的用途。

如果您正在使用模型,您可以在类变量中给出具有自动增量列的表的名称。

protected $_name="<table_name>"; 

然后在模型类方法中,您可以从

获取最后一个插入ID
$insertID= $this->getAdapter()->lastInsertId();

答案 3 :(得分:0)

该代码应该有效,但它只会让你获得上次插入的ID。

你可以使用这个mysql查询获得下一个自动增量:

SELECT Auto_increment FROM information_schema.tables WHERE TABLE_SCHEMA = 'your_db_name' AND TABLE_NAME='the_table_you_want';