Php 了解sql错误和自动增量值中的pdo rollback()

Php 了解sql错误和自动增量值中的pdo rollback(),php,mysql,pdo,Php,Mysql,Pdo,我有个问题 我正在使用pdo和beginTransaction(),但我不了解一些事情 我的SQL表有3列:id(自动增量)、用户名(唯一)和密码 在我的代码中,我有: $pdo->beginTransaction(); $prepared = $pdo->prepare("INSERT INTO (username,password) VALUES(?,?)"); $prepared->$pdo->bindParam(1,"stefan"); $prepared->

我有个问题

我正在使用pdo和beginTransaction(),但我不了解一些事情

我的SQL表有3列:id(自动增量)、用户名(唯一)和密码

在我的代码中,我有:

$pdo->beginTransaction();
$prepared = $pdo->prepare("INSERT INTO (username,password) VALUES(?,?)");
$prepared->$pdo->bindParam(1,"stefan");
$prepared->bindParam(2,"111111");
$prepared->execute();
$count= $prepared->rowCount();

if($count === FALSE):
    $pdo->rollback();
    var_dump($prepared->errorInfo());
else:
    $pdo->commit();
    echo "row count: {$count}";
endif;
当我执行这段代码时,一切正常,生成id=1、username=“stefan”和password=“111111”

现在,为了测试rollback()函数,我特意生成了一个错误。我尝试在一行中插入相同的数据4次,在$prepared->errorInfo()中得到了唯一的错误。效果也很好

问题是,当im在这4个错误(例如,username=“luv”,password=“22222”)之后插入新记录时,该新记录已插入,但ID=6而不是ID=2

可以吗?rollback()不应将自动增量保留为正确的最后一个值? 我错过了什么

谢谢您的帮助。

执行回滚时,auto inc的值会被“烧掉”。这是正常的,也是意料之中的

参考文献