Php 了解sql错误和自动增量值中的pdo rollback()
我有个问题 我正在使用pdo和beginTransaction(),但我不了解一些事情 我的SQL表有3列:id(自动增量)、用户名(唯一)和密码 在我的代码中,我有: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();
$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的值会被“烧掉”。这是正常的,也是意料之中的
参考文献