如何使用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?
感谢
答案 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';