我使用Doctrine / DBAL的时间很长,但是使用executeUpdate并获取最后一个插入ID时我遇到了一些问题。 它始终返回0,但DB Entry已设置。 coloumn id已设置,它在我的DB中是AutoIncrement和PRIMARY。
这是将我的条目复制到另一个表的功能。
$copy = $app['db']->executeUpdate('INSERT INTO `pd_user_model` (
`campaign_id`,
...
`created`)
SELECT `campaign_id`,
...
NOW()
FROM `pd_pass_model` WHERE `campaign_id` = ?', array($campaignID));
echo "INSERT<br>";
echo "LAST INSERT:" . $app['db']->lastInsertId();
//RETURN VALUE
INSERT
LAST INSERT:0
任何人都有任何暗示。 谢谢到目前为止!
答案 0 :(得分:3)
lastInsertId返回最后生成的 ID。在您的用例中,您没有生成ID。您已经为查询提供了一个id,因此lastInsertId函数将返回0,因为它没有生成ID。
LAST_INSERT_ID()(不带参数)返回BIGINT(64位)值 表示为其设置的第一个自动生成的值 最近执行的INSERT的AUTO_INCREMENT列 声明影响这样一个专栏。