Php mysqli_回滚($conn)不工作
我正在尝试使用mysql数据库(InnoDB)在php中测试事务,但回滚不起作用 这是我的密码Php mysqli_回滚($conn)不工作,php,mysql,mysqli,innodb,rollback,Php,Mysql,Mysqli,Innodb,Rollback,我正在尝试使用mysql数据库(InnoDB)在php中测试事务,但回滚不起作用 这是我的密码 <?php $servername = "localhost"; $username = "root"; $password = ""; $database = "test"; $conn = mysqli_connect($servername, $username, $password, $database); mysqli_autoco
<?php
$servername = "localhost";
$username = "root";
$password = "";
$database = "test";
$conn = mysqli_connect($servername, $username, $password, $database);
mysqli_autocommit($conn, FALSE);
mysqli_query($conn,"update person set Balance = 300 where Name = 'Jay'");
if ($conn->affected_rows > 0) {
mysqli_commit($conn);
echo "First Commited <br>";
mysqli_query($conn,"update person set Balance = 3000 where Name = 'Rv'");
if($conn->affected_rows > 0) {
mysqli_commit($conn);
echo "Second Commited <br>";
}else {
mysqli_rollback($conn);
echo "First rollback <br>";
}
}
mysqli_close($conn);
?>
我认为这与如果($conn->受影响的_行
。如示例中所示,在调用commit之前执行了多个查询,而autocommit从未重置为TRUE。您能否确切地确认发生了什么?是两个更新都得到了吗?还是只有一个更新?您不应该将过程式与面向对象的样式混合使用,只需选择一个。如果第二个查询的执行失败d然后第一次提交应该根据else块回滚,但它不起作用,提交不回滚在这种情况下,未重置的自动提交不重要,因为连接在脚本末尾关闭。答案在本文中给出。检查