Php mysql事务不插入所有查询


Php mysql transaction not inserting all queries

我遇到了一个问题。我运行一个包含2个查询的事务,但只有一个查询是在数据库上写的。另一个则不是。这怎么可能呢?我认为要么两者都有,要么没有,这就是使用事务的意义,对吗?

下面是我的部分代码:

mysqli_autocommit($conn, FALSE);
mysqli_query($conn, "INSERT INTO my_table_exemple (orderId, packageName, productId, purchaseTime, purchaseState, purchaseToken) 
                             VALUES ('".$_POST["orderId"]."', '".$_POST["packageName"]."', '".$_POST["productId"]."', '".$_POST["purchaseTime"]."', ".$_POST["purchaseState"].", '".$_POST["purchaseToken"]."')");
mysqli_query($conn, "UPDATE user
                             SET end_date='".$calcEndDate."'
                             WHERE id=".$_POST['user_id']);
/* Validation de la transaction */
if (!mysqli_commit($conn)) {
    $row_array['status'] = "error";
    $row_array['msg'] = "Error: " . mysqli_error($conn);
} else {
    $row_array['status'] = "success";
    $row_array['msg'] = "Transaction success";
}   
echo json_encode($row_array);

返回事务成功,更新用户表,但没有在my_table_example中插入记录。

我有一个错误在我的插入查询,我猜,我要调试它,但我不想继续不知道为什么我的事务不工作的方式,它应该

您需要在每个查询之后检查是否有任何错误-对于任何要回滚的错误,如果在所有查询之后都没有错误,则要提交。只提交没有错误的查询&commit报告commit上的任何错误,而不是前面的查询。