como hacer un RollBack con PHP y Mysql

cyberjuanra
07 de Julio del 2006
Hola a todos, soy algo nuevo en esto y necesito hacer un RollBack con PHP y MySQL me podrian decir como hacerlo o donde encuentro informacion?

gracias

Nogaso
07 de Julio del 2006
Viejo te envio un ejemplo de como hacerlo, espero te sirva:

<!-- INSERTAR UN REGISTRO -->
<html>
<head>
<title>Insertar Registro</title>
</head>

<body background="../images/fondos/gray_lines.gif">

<div align="center">
<center>
<table border="0" cellpadding="2" width="100%">
<tr>
<td width="100%">
<p align="center"><font size="4" face="verdana" color="#000080"><b>INSERTAR
UN REGISTRO</b></font></td>
</tr>
</table>
</center>
</div>
<p align="center"><img border="0" src="../images/lineas/bar_lin.gif" width="546" height="42"></p>
<p align="center">&nbsp;</p>
<?php
include("conexion.php");

$error=0;
$conxn = Conectarse('pruebas');
if (@mysql_query("SET AUTOCOMMIT=0;",$conxn))//desactivar el modo de autoguardado
{
if (@mysql_query("BEGIN;",$conxn)) //dar inicio a la transacción
{
$query_Ins1 = "insert into product (category, id, price) values(1,5,63.4)";
$query_Ins2 = "insert into customer (id) values(6)";
$query_Ins2 = "insert into customer (id) values(6)";
if (@mysql_query("$query_Ins1",$conxn))
{
if (@mysql_query("$query_Ins2",$conxn))
{
if(@mysql_query("COMMIT;",$conxn))
{
@mysql_query("SET AUTOCOMMIT=1;",$conxn);
}
else
{
$error=1;
}
}
else
{
$error=1;
}
}
else
{
$error=1;
}
}
else
{
$error=1;
}
}
else
{
$error=1;
}

if ($error == 1)
{
while (!(@mysql_query("ROLLBACK;",$conxn))); //garantizo que se haga el retroceso de las operaciones
printf ("HA OCURRIDO UN ERROR DURANTE EL PROCESO");
}
$query_cons1 = "select * from customer;";
$query_cons2 = "select * from product;";
$select1= @mysql_query("$query_cons2",$conxn);
$select2= @mysql_query("$query_cons1",$conxn);
printf("&nbsp<Center>");
printf("<P><TABLE BORDER=3 CELLSPACING=2 CELLPADDING=1>");
printf("<TR><TD><B>&nbsp;CATEGORY</B></TD><TD><B>&nbsp;ID</B></TD><TD><B>&nbsp;PRICE</B></TR>");
while($row = mysql_fetch_array($select1))
{
printf("<tr><td>&nbsp;%d</td><td>&nbsp;%d</td><td>&nbsp;%f&nbsp;</td></tr>", $row["category"],$row["id"],$row["price"]);
}
printf("<P><TABLE BORDER=3 CELLSPACING=2 CELLPADDING=1>");
printf("<TR><TD><B>&nbsp;ID</B></TD></TR>");
printf("&nbsp<Center>");
while($row = mysql_fetch_array($select2))
{
printf("<tr><td>&nbsp;%d</td></tr>", $row["id"]);
}
?>
<p align="center"><img border="0" src="../images/lineas/bar_lin.gif" width="546" height="42"></p>
</body>
</html>

miketrix
07 de Julio del 2006
while (!(@mysql_query("ROLLBACK;",$conxn))); //garantizo que se haga el retroceso de las operaciones

Creo que no hace falta hacer un while, con ejecutar una vez el ROLLBACK, ya anula toda la transacción.

Mi Blog: http://trixx.inspiroh.com
Saludos