Le dichiarazioni e le transazioni preparate sono tecniche e tecnologie non correlate.
Potresti voler emettere il START TRANSACTION
e COMMIT
/ROLLBACK
comandi direttamente invece di utilizzare i metodi dedicati. Sono funzionalmente equivalenti.
Per il tuo ciclo, emetteresti il START TRANSACTION
prima il tuo prepare
, quindi il tuo COMMIT
dopo che il ciclo è terminato. Probabilmente non dovresti provare ad aprire una transazione dopo che un'istruzione preparata è stata avviata ma prima che sia stata eseguita.
Per qualche motivo, non hanno aggiunto un comando "avvia transazione" a favore della disattivazione dell'autocommit. È una di quelle cose strane su mysqli che mi fa invece consigliare sempre PDO. :) L'apertura di una transazione disattiva implicitamente l'autocommit per la durata della transazione.