无法从 MySQL 获取最后插入的 ID

Posted

技术标签:

【中文标题】无法从 MySQL 获取最后插入的 ID【英文标题】:Not able to get last inserted ID from MySQL 【发布时间】:2011-08-03 09:10:32 【问题描述】:

我根据 ID 将多行从一个表插入到另一个表。 对于这个项目,我将 PDO 用于所有数据库查询。这是我正在使用的代码/功能:

  protected function importData($data) 
    $i = 0;

    $this->db->beginTransaction();

    foreach($data as $item) 
      $id = $item['id'];

      $sql .= "INSERT INTO table1 (name,age)
              SELECT name, age
              FROM table12
              WHERE id = $id; ";

      $this->db->exec($sql);   
      $i++;   
    
    $this->db->commit();

    // None of these are working
    $last_id1 = $this->db->exec('SELECT LAST_INSERT_ID()');
    $last_id2 = $this->db->lastInsertId();

    echo 'id1: '.$last_id1.', id2:'.$last_id2;
  

但由于某种原因,我无法获得最后插入的 ID。 如果我在Toad for mysql 中尝试SELECT LAST_INSERT_ID(),我会得到一个结果,但它不是最后插入的行的ID。

当我以这种方式插入行时,为什么没有注册最后插入的行 ID? 是不是因为我使用的是beginTransactioncommit,所以它被当作一个事务处理?

【问题讨论】:

【参考方案1】:

是的,是的。您需要在提交事务之前获取 ID。

【讨论】:

以上是关于无法从 MySQL 获取最后插入的 ID的主要内容,如果未能解决你的问题,请参考以下文章

为啥我无法在 PHP 和 MySQL 中获取最后一个插入 ID?

无法选择最后插入的 id 为 [Mysql, php pdo oop] [重复] 的行

php PDO - 如何获取最后插入的ID?

之前:获取最后插入的 id - mysql 现在:我们应该在哪里调用最后插入的 id?

我无法连续看到从 MySQL 数据库到 html 页面的最后插入数据

从 Access 获取最后一个插入 ID