Declarações e transações preparadas são técnicas e tecnologias não relacionadas.
Você pode querer emitir o
START TRANSACTION
e COMMIT
/ROLLBACK
comandos diretamente em vez de usar os métodos dedicados. Eles são funcionalmente equivalentes. Para seu loop, você emitiria o
START TRANSACTION
antes seu prepare
, então seu COMMIT
após a saída do loop. Você provavelmente não deve tentar abrir uma transação depois que uma instrução preparada foi iniciada, mas antes de ser executada. Por algum motivo, eles não adicionaram um comando "iniciar transação" em favor de desativar o autocommit. É uma daquelas coisas estranhas sobre o mysqli que me faz sempre recomendar o PDO. :) Abrir uma transação desativa implicitamente o autocommit durante a transação.