Cita:
Iniciado por loncho_rojas Deberías aportar algo referente al problema, la librería MYSQLi o PDO, o POSTGRESql da igual, si no sabes cómo resolver el problema de manera lógica... la sintaxis SQL no se cambia porque PHP decide simplificar o modernizar sus librerías... la gente confunde librería de PHP con lenguaje SQL... no confundas a los posteadores con tus aclaraciones.
Disculpa loncho_rojas, pero estas comparando peras con manzanas.
PDO define una interface para poder abstraerte de la Base que estés utilizando ( Contiene los drivers necesarios para la DB que desees), mientras que Mysql o Mysqli son meras librerias de conexión, nunca hable de lenguajes.
Te invito a que nos expliques como resolver de "manera lógica" una transaccion con la libreria Mysql, por como lo expones seguramente sera mucho mas optimo y facil que utilizar begind y end transaction de PDO o Adodb...
La solución que planteas rescatando el max(id) es
rapida, pero arriesgada y poco confiable, puedes tener problemas de concurrencia y nunca enterarte.
Por si no se entiende, cuando haces max(id) no hay nada que te este atando al insert anterior realmente, y no puedes estar seguro si el ultimo es realmente el que quieres, o es un insert provocado por otro usuario, pudiendo otorgarle ese id a 2 usuario al mismo tiempo. De ahí surja la necesidad de "atar" las consultas con una transacción, y es la forma correcta de hacerlo.
Es momento de dar consejos y soluciones de calidad, y parar de contestar respuestas pobres, que no ayudan a mejorar la calidad del código en general, ni aportan mucho a la comunidad. Reitero, se que lo que propongo no es lo mas sencillo, pero es una de las maneras
Correctas de hacerlo.