Ver Mensaje Individual
  #8 (permalink)  
Antiguo 18/09/2008, 03:03
WadE87
 
Fecha de Ingreso: septiembre-2008
Mensajes: 36
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: duda en transaccion

Hola de nuevo.
Carxl, lo he conseguido solucionar ,y más o menos era como me dijisteis tú y GatorV. Salvo una cosa:

Código PHP:
mysql_query('BEGIN'); 
     
$id=mysql_insert_id();  //faltaba poner esta instrucción porque si no el valor $id de sql1 no existe.

$sql1="INSERT INTO usuarios (id, alias, clave, privilegios, mail, dni, valido, aleatorio) VALUES (".$id.",'".$usuario."','".md5($clave)."', 1, '".$mail."', '".$dni."', 0, ".rand().")"
mysql_query($sql1,$conexion) or die(mysql_query('rollback')); 
     
$id=mysql_insert_id(); 

$sql2"INSERT INTO log (usuario, evento, ip) VALUES (".$id.",1, '".$_SERVER['REMOTE_ADDR']."')"
mysql_query($sql2,$conexion) or die(mysql_query('rollback')); 
     
mysql_query('COMMIT'); 
     
header('Location: form.php'); 
Pero tras solucionarlo y tras leer la documentación de mysql_insert_id(), no me ha quedado claro.

El trozo de código anterior es para introducir un usuario nuevo y registrarlo en log.
cuando se ejecuta la primera instrucción $id=mysql_insert_id(); el valor de id que toma es el siguiente al identificador del último usuario añadido en la tabla usuarios.
Pero al ejecutar $id=mysql_insert_id(); por segunda vez, me devuelve el mismo identificador que en la primera sentencia $id=mysql_insert_id();
(por lógica tendría que devolver el siguiente).
Por ésto, creo que hay algo que se me escapa y hace que no lo entienda bien.
Haber si alguien me puede aclararlo.
Saludos a todos.