Транзакция охватывает соединение с базой данных, а не единицу кода PHP. Таким образом, любой запрос, который использует это соединение, будет предметом транзакции.
Вы должны быть осторожны, чтобы иногда программисты создавали свои собственные соединения с базой данных внутри (например) конструктора класса, что означает, что методы класса могут использовать свое собственное соединение и поэтому не подчиняются транзакции, которую вы пытаетесь контролировать. Это также является причиной передачи соединений с базой данных, а не создания собственных или использования global
.
Хотя вы также должны знать, что определенные операторы SQL будут вызывать коммиты и т. Д. Так что обратитесь к https://dev.mysql.com/doc/refman/5.6/en/sql-syntax-transactions.html, который предоставит более подробную информацию о том, когда / что / где это может произойти.