Ver Mensaje Individual
  #3 (permalink)  
Antiguo 07/03/2014, 07:48
marcosgue
 
Fecha de Ingreso: enero-2008
Mensajes: 79
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: Como usar transacciones Mysql?

Cita:
Iniciado por quimfv Ver Mensaje
PHP no es quien maneja la transacción si no mysql
Según tengo entendido desde php5 se puede manejar desde php pero no me escuches mucho ya que hace tiempo no estoy en este mundillo jaja.

IMPORTANTE: Toma con pinzas lo que escribo ya que estoy muy fuera del tema y tal vez no es correcto lo que estoy planteando, pero por lo que he podido leer creo que debería ser algo similar a lo que planteo aquí abajo.

creo que debes desactivar el autocommit primero para que no te ejecute las query en el momento que las lanzas que sería algo así si seguimos el ejemplo que has planteado

Código PHP:
$this->_con->autocommit (false); 

luego ejecutas las query que tengas ya sean simples o no

Código PHP:
$_this->_con->query($sql);
$_this->_con->query($sql2);
$_this->_con->query($sql...);
$_this->_con->query($sqln); 
y luego las plasmas en la BD

Código PHP:
$_this->_con->commit(); 
No se si será igual con las sentencias preparadas, en el caso de que sea igual sería así el tema

Código PHP:
$this->_con->autocommit(false);

$this->_con = new mysqli(DB_HOSTDB_USUARIODB_PASSWORDDB_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(); 


//Aquí ejecutas el query que añade el movimiento
$this->_con->query($sql2);

$this->_con->commit(); 
Alguien con más experiencia debería darte una mano con el tema Rollback, la verdad no se me ocurre como aplicarlo y es importante Ya que en caso de algún error en medio de la transacción se anularian todos los cambios realizados.

Saludos