如何在使用相同连接完成的多个查询中获取最后插入的ID?

时间:2017-06-11 00:13:37

标签: php mysql pdo transactions

我在PHP脚本中有几个mySQL查询,我把它放在一个事务中。

我想获取每个查询的最后一个插入ID,但它只在第一次工作,因为最后插入的ID保持不变,(我想这是因为它被有效地视为一个大查询,并且只有一个连接)。

这些是我的疑问:

$conectarDB->beginTransaction();

$a = $conectarDB->prepare("  INSERT INTO usuarios SET  userEmail =?, userName =? WHERE userID=?  ");
$a->bindParam(1, $userEmail);
$a->bindParam(2, $userApellido);
$a->bindParam(3, $userID);
$a->execute();

$pago1 = $conectarDB->lastInsertId();

$b = $conectarDB->prepare("  INSERT INTO versionesUsuarios  SET userID=?, userEmail=?  ");
$b->bindParam(1, $userID);
$b->bindParam(2, $userEmail);
$b->execute();

$pago2 = $conectarDB->lastInsertId();

$conectarDB->commit();

如何解决这个问题?如何获取$pago1$pago2

2 个答案:

答案 0 :(得分:0)

我认为你可以在每次执行查询后尝试这个。我希望它的工作。

$keys = $conectarDB->query("SELECT LAST_INSERT_ID()");
$arr = $keys->fetchColumn();

答案 1 :(得分:0)

可能是因为commit会立即执行所有查询。尝试在每个插入查询中开始并提交。

 $pago1 = $conectarDB->lastInsertId();
 $conectarDB->commit();
 $conectarDB->beginTransaction();