【发布时间】:2019-01-29 15:50:53
【问题描述】:
我已经写了一个输入记录的代码,如果输入了第一条记录,则只能输入第二条,如果第二条失败,则第一条将回滚并且不会发生任何变化
<?php
include '../function.php';
// Set autocommit to off
mysqli_autocommit($mysqli,FALSE);
// Insert some values
$a=mysqli_query($mysqli,"INSERT INTO test VALUES ('10','2')");
if($mysqli->affected_rows > 0)
{
$b=mysqli_query($mysqli,"INSERT INTO test VALUES ('7','2')");
if($mysqli->affected_rows > 0){
mysqli_commit($mysqli);
echo "commited";
}
else{
mysqli_rollback($mysqli);
echo "rollback";
}
}else{
echo "nothing";
}
// Close connection
mysqli_close($mysqli);
但是如果第二条记录保存失败,上面的代码会回滚我的第一条记录。
【问题讨论】:
-
如果您希望它们成为单独的事务,您需要在添加第二个之前提交第一个;否则整个事务将回滚(即两条记录)。
标签: php mysqli transactions rollback