Doctrine / DBAL lastInsertId()返回0

时间:2013-07-29 18:28:59

标签: php silex

我使用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

任何人都有任何暗示。 谢谢到目前为止!

1 个答案:

答案 0 :(得分:3)

lastInsertId返回最后生成的 ID。在您的用例中,您没有生成ID。您已经为查询提供了一个id,因此lastInsertId函数将返回0,因为它没有生成ID。

来自MYSQL doc

  

LAST_INSERT_ID()(不带参数)返回BIGINT(64位)值   表示为其设置的第一个自动生成的值   最近执行的INSERT的AUTO_INCREMENT列   声明影响这样一个专栏。