繁体   English   中英

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

[英]Not able to get last inserted ID from MySQL

我根据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 ,因此它作为一个事务处理?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM