Hace tiempo que estoy dando vueltas a un tema, en primer lugar me es complicado comprender cómo se empieza a aprender PHP con los accesos tradicionales a las bases de datos, existiendo desde la version 5.1 de PHP la clase PDO y sobre todo su extension PDOStatement y la seguridad que nos proporciona en las consultas protegiendonos de la inyeccion de codigo. Y no es necesario saber programar en clases para usarla, solo hay que aprender cómo se usa igual que una conexion estandar. Me indigna esto porque hace un año que empecé en este mundo y me pagué un curso presencial de varios meses que todavía estoy pagando y ni siquiera me mencionaron que existía esta librería

Pero esto es otro tema, voy al grano a plantear mi duda a ver si alguien me puede ayudar.
En un principio PDOStatement nos protege de la inyeccion de codigo SQL (hablo de SQL, porque yo trabajo con MySQL), digamos que "reservando" un hueco en la query para las variables susceptibles de ser atacadas por GET, POST, COOKIES etc... ese hueco se rellena luego con el método bindValue() antes de ejecutar la consulta, lo he probado y funciona a la perfección. Cuando lo empecé a usar decidí que ya siempre iba a usar PDOStatement para todo, hasta que llegué a las necesidad de realizar Transacciones para proteger insercciones o modificaciones de varios datos encadenados y dependientes unos de otros.
Para quien no sepa, (y si me equivoco ruego que los expertos me corrijan para no liar a nadie) una transaccion se utiliza cuando tenemos que insertar, modificar o borrar un bloque de datos, por ejemplo, en diferentes tablas, pero que obligatoriamente se tienen que realizar con exito todas y en el caso de que una de ella de un error tenemos la posibilidad de deshacer todas las demas, digamos que viene a ser como el "CONTROL-Z" de una operacion con bases de datos. Con esto evitamos muchos posibles problemas de insertar datos mal.
El problema me surge porque necesito hacer las dos cosas y no lo he conseguido, hay que elegir entre PDOStatement o Transaccion, que es un metodo de la clase PDO y que no funciona con PDOStatement.
Si alguien sabe cómo hacer las dos cosas a la vez lo agradecería mucho, porque hay situaciones dificiles de decidir cual de los dos elegir.
Esta claro que las transacciones son mas importantes en muchas ocasiones, porque los datos se pueden validar y proteger de otra forma y la transaccion no, pero por mucha funcion que me pueda inventar siempre el prepared statement será mas seguro y rápido.
Saludos!!