Подготовленные заявления и транзакции не связаны между собой методами и технологиями.
Возможно, вы захотите ввести команды START TRANSACTION
и COMMIT
/ ROLLBACK
напрямую, вместо использования специальных методов. Они функционально эквивалентны.
Для вашего цикла вы должны выдать START TRANSACTION
до вашего prepare
, затем ваш COMMIT
после выхода из цикла. Вероятно, вам не следует пытаться открыть транзакцию после запуска подготовленного оператора, но до его выполнения.
По какой-то причине они не добавили команду «начать транзакцию» в пользу отключения автоматической фиксации. Это одна из тех странных вещей в mysqli, которая заставляет меня всегда рекомендовать PDO. :) Открытие транзакции неявно отключает автокоммит на время транзакции.