Подготвените извлечения и транзакции са несвързани техники и технологии.
Може да пожелаете да издадете START TRANSACTION
и COMMIT
/ROLLBACK
команди директно, вместо да използвате специалните методи. Те са функционално еквивалентни.
За своя цикъл трябва да издадете START TRANSACTION
преди вашата prepare
, след това вашият COMMIT
след излизане на цикъла. Вероятно не трябва да се опитвате да отворите транзакция, след като подготвеният оператор е стартиран, но преди да бъде изпълнен.
По някаква причина те не добавиха команда за "стартиране на транзакцията" в полза на изключване на autocommit. Това е едно от онези странни неща за mysqli, което ме кара винаги да препоръчвам PDO вместо това. :) Отварянето на транзакция имплицитно изключва autocommit за продължителността на транзакцията.