我有个问题...
我使用 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() 中出现了唯一错误。也可以正常工作。
问题是,当我在这 4 个错误(例如,用户名 =“luv”,密码 =“222222”)之后插入一条新记录时,这条新记录已被插入,但 ID = 6 而不是 ID = 2。
那没问题?rollback() 不应该将自动增量留在最后一个正确的值?我想念什么?
感谢帮助。