Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql事务未插入所有查询_Php_Mysql_Transactions - Fatal编程技术网

Php mysql事务未插入所有查询

Php mysql事务未插入所有查询,php,mysql,transactions,Php,Mysql,Transactions,我有个问题。 我运行一个包含2个查询的事务,但只有一个查询正在数据库上写入。。另一个不是。这怎么可能?我认为要么两者都有,要么没有,这就是使用事务的意义所在,对吗 以下是我的部分代码: mysqli_autocommit($conn, FALSE); mysqli_query($conn, "INSERT INTO my_table_exemple (orderId, packageName, productId, purchaseTime, purchaseState, purchaseTok

我有个问题。 我运行一个包含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_示例中未插入任何记录


我想我的insert查询有一个错误,我将调试它,但我不想在不知道为什么我的事务没有按预期的方式工作的情况下继续进行。

您需要在每次查询后检查是否有任何错误-如果在所有查询后都没有错误,您将回滚任何错误。只有没有错误的查询才会提交&提交会报告提交中的任何错误,而不是前面的查询。

请检查数据库表使用的引擎。MyISAM(至少以前是默认值)不支持事务。如果您需要事务,您的表需要使用InnoDB创建。就是这样。你不知道我有多爱你。我哪里都没准备好。。谢谢很多。事实上,我可以在每个表上将MyISAM更改为InnoDB,但它仍然不起作用。服务器本身是否有用于mysql调用的数据库引擎?或者仅仅改变表格引擎就足够了?