Ошибка перехвата транзакций PHP MySQL

Я искал два дня и до сих пор не нашел ответа. Предположим, у меня есть код под 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.

Как я могу проверить, все запросы внутри транзакции успешно выполнены?

0

Решение

Обычный способ сделать это:

$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");
} catch (\Exception $e) {
// this will show statement with error
echo $e->getMessage();
$mysqli->rollback();
throw $e;
}
$mysqli->commit();
1

Другие решения

Других решений пока нет …