Php mysqli_回滚($conn)不工作

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

我正在尝试使用mysql数据库(InnoDB)在php中测试事务,但回滚不起作用

这是我的密码

<?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块回滚,但它不起作用,提交不回滚在这种情况下,未重置的自动提交不重要,因为连接在脚本末尾关闭。答案在本文中给出。检查