【问题标题】:Doctrine/DBAL lastInsertId() returns 0Doctrine/DBAL lastInsertId() 返回 0
【发布时间】:2013-07-29 18:28:59
【问题描述】:

我使用 Doctrine/DBAL 很长时间了,但是我在使用 executeUpdate 和获取最后一个插入 ID 时遇到了一点问题。 它总是返回 0 ,但设置了 DB 条目。列 ID 已设置,它在我的数据库中是 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

任何人都可以给我任何提示。 到目前为止谢谢!

【问题讨论】:

  • 这是因为您在 INSERT 语句之后执行 SELECT。尝试插入查询然后检查 lastInsertId() 的值

标签: php silex


【解决方案1】:

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

来自MYSQL doc

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    • 1970-01-01
    • 2022-12-19
    • 1970-01-01
    相关资源
    最近更新 更多