Php mysql 事务未插入所有查询

标签 php mysql transactions

我遇到了问题。 我运行一个包含 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/

相关文章:

php - 插入 mysql 的值与查询字符串中的值不同

php - 如何在删除帐户中删除用户的帖子?

php - 如何获取 MySQL 数据库中的枚举可能值?

java - 如何使用 Java 使用用户事务显式锁定 Postgresql 表

php - 如何在代码点火器中为 form_multiselect 使用高度属性?

php - 内部连接和同一查询中的 where 返回空白错误 mysql

php - 在 SELECT 语句中插入变量

c# - 如何将 xampp 服务器连接到 c# gui 应用程序?

c# - ADO.NET 在一个 sql 连接中重试事务

java - 如何修复身份始终返回 0 的 HSQL DataSource + TxM