Los foros del Guille

Si no encuentras respuesta, puedes buscar en el sitio del Guille

Google
 

elGuille.Hosting, seguramente los mejores precios de alojamiento

Selecciona el foro y pulsa en mostrar:     Mostrar 
De tu interés (algunos de los avisos publicados)

24/mar/2007
IMPORTANTE Por favor, cuando hagas una consulta, comprueba si te han respondido, y en caso de que la respuesta sea satisfactoria, indicalo pulsando en el botón de que esa respuesta es la correcta. Es lo menos que debes hacer, ya que así más gente sabrá que esa respuesta contestaba a tu duda.
Gracias.

  Foro: PHP.General Cantidad:  Desde:   Hasta:    Aplicar   Responder 
Respuestas a: 53984 - Transacciones con Mysqli
IDAsuntoFechaNick 
53984 Transacciones con Mysqli29/09/10 19:48Black   
Que tal alguien ha usado transaccione en mysql???

Lo que pasa es que hago insert en 2 tablas.. entonces si falla el insert en la segunda tabla, quiero hacer un rollback.. pero hasta ahorita no he encontrado nada.... aki les dejo el ejemplo...
cuando entra al segundo insert... marca error.. pero no me hace rollback, es decir el insert primero se queda insertado en la tabla

//FUNCIONES
function IniciarTransaccion()
{
mysqli_query("SET AUTOCOMMIT=0");
mysqli_query("BEGIN");
}
function Commit()
{
mysqli_query("COMMIT");
}
function RollBack()
{
mysqli_query("ROLLBACK");
}
function FinalizarTransaccion($conect)
{
mysqli_query("SET AUTOCOMMIT=1");
mysqli_close($conect);
}

//----------------------------------------------------------------------------------------------
//GUARDAR DATOS
//----------------------------------------------------------------------------------------------
$error=false;

$cn=Conectarse(); // Me conecto
IniciarTransaccion();

$stored="call spa_alumno('danillo', @prmOUT)";
if(!mysqli_query($cn, $stored)){
$error=true;
}else{
$sql="select @prmOUT;";
$trans=mysqli_query($cn, $sql);
$row=mysqli_fetch_array($trans);
$IdAlumno=$row[0];

$stored2="call spa_materia(9, 'matematicas')"; //aki lo puse para que truene y marq error y me genere rollback

if(!mysqli_query($cn, $stored2)){
$error=true;
}

}


if($error){
RollBack();
echo "Ocurrio un error ROLLBACK";
}else{
Commit();
echo "Datos insertados COMMIT";
}
FinalizarTransaccion($cn);

/-------------------------------------------------------------------------------------------



Saludos.

 
(c) Guillermo 'guille' Som, 2005-2018  - foros.elGuille v1.0.5.3 (23/Mar/2009 14:50 GMT +1)  - (ASP.NET 2.0 v2.0.50727.8800)
 
Usuarios activos: 74 - App. iniciada: 10/12/2018 5:28:53 GMT - La hora GMT del servidor es: 10/12/2018 06:48:40 GMT