Tengo una duda en relación a las transacciones y utilizarlas en PHP, principalmente no se como hacerlo correctamente jaja.
Les comento como para entrar en contexto.
Tengo una tabla ordenesdetrabajo, que por ejemplo contiene
Código:
Luego tengo una tabla movimientos que contieneid, idcliente, descripción, marca, modelo, precio
Código:
movimiento tiene por default 1 que sería (orden aceptada)idordendetrabajo, fechayhora, movimiento
y probablemente también deba actualizar otra tabla más que se relaciona con la orden de trabajo.
Que pasa, cuando un usuario carga una orden, debo cargar en ambas tablas datos que se relacionan perfectamente.
Es decir el movimiento asentado, debe contener el último ID que se ingreso en la tabla ordenes ya que el primer movimiento se carga automáticamente al crearse la orden. Luego los siguientes movimientos no hay problema porque se cargaran manualmente pero el primer movimiento se carga automático al cargarse la orden. Además de que en un primer momento no puedo saber que ID se le asignará a la orden.
en el Foro MySQL me indicaron que para este tipo de cargas debo utilizar Transacciones y para la inserción de movimientos utilizo LAST_INSERT_ID() y listo, de esta forma podre hacerlo sin peligro de que se carguen 2 movimientos a la misma orden. Si es que 2 usuarios están utilizando el sistema al mismo tiempo.
Bien acá viene mi duda Como se utilizan las transacciones en PHP? se como ejecutar una carga, y luego otra pero como anidarlas en una transacción.
indivicualmente haría lo siguiente
Código PHP:
$this->_con = new mysqli(DB_HOST, DB_USUARIO, DB_PASSWORD, DB_DATABASE);
$sql = 'INSERT INTO ordenesdetrabajo (idcliente, descripción, marca, modelo, precio) VALUES (?, ?, ?, ? ,?)';
$this->_stmt = $this->_con->prepare($sql)
$this->_stmt->bind_param('isssd', $idcliente, $descripcion, $marca, $modelo, $precio);
$this->_stmt->execute();
Código PHP:
$this->_con = new mysqli(DB_HOST, DB_USUARIO, DB_PASSWORD, DB_DATABASE);
$sql = 'INSERT INTO ordenesdetrabajo (idordendetrabajo, fechayhora) VALUES (last_insert_id(), now())';
$this->_con->query($sql)
$this->_con->close();
Desde ya muchas gracias a todos!