我已经找了两天了,还没找到答案。假设我在PHP中有下面的代码:
$mysqli->begin_transaction();
mysqli_query($mysqli, "DELETE FROM Test WHERE ID=1");
mysqli_query($mysqli, "DELETE FROM TEST WHEREE ID=2"); <-- THIS ONE WILL FAIL BECAUSE OF TYPO
mysqli_query($mysqli, "DELETE FROM Test WHERE ID=3");
if ($mysqli->commit()) {
//SUCCESS
}
else {
//Failed
$mysqli->rollback();
}我无法检查事务中的查询是否全部成功,因为当我执行这些查询时,提交函数总是返回true。
如何检查事务中的所有查询是否成功?
发布于 2017-04-02 18:39:59
这样做的共同方法是:
$mysqli->begin_transaction();
try {
mysqli_query($mysqli, "DELETE FROM Test WHERE ID=1");
mysqli_query($mysqli, "DELETE FROM TEST WHEREE ID=2"); <-- THIS ONE WILL FAIL BECAUSE OF TYPO
mysqli_query($mysqli, "DELETE FROM Test WHERE ID=3");
$mysqli->commit();
} catch (\Exception $e) {
// this will show statement with error
echo $e->getMessage();
$mysqli->rollback();
throw $e;
}发布于 2019-06-17 10:34:49
您可以使用mysqli_error捕获错误。
$startTrans = 'START TRANSACTION;'; // Starting a mysql transaction
mysqli_query($conn, $startTrans);
$query = 'Insert into students (roll_no,name,class) VALUES (101,"mathew","fourth")';
$result = mysqli_query($conn, $query);
if (mysqli_error($conn)) {
// Rollback can be done here
mysqli_query($conn, "ROLLBACK;"); // All above queries will get rolled back
die(mysqli_error($conn));
} else {
mysqli_query($conn, "COMMIT;"); // changes will get saved to database
}https://stackoverflow.com/questions/43170943
复制相似问题