我遇到了问题。 我运行一个包含 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_exemple 中插入记录。
我想我的插入查询有一个错误,我要调试它,但我不想在不知道为什么我的事务没有按预期方式工作的情况下继续。
最佳答案
您需要在每个查询后检查是否有任何错误 - 如果出现任何错误,您将回滚,如果在提交的所有查询后没有错误,您将回滚。只有没有错误的查询才会被提交,并且提交会报告提交上的任何错误 - 而不是之前的查询。
关于Php mysql 事务未插入所有查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32887347/