Foros del Web » Programando para Internet » PHP »

Problema con transacciones

Estas en el tema de Problema con transacciones en el foro de PHP en Foros del Web. Hola a todos,estoy trabajando con transacciones y tengo un problema.Mi codigo de la transaccion es: Código PHP: $sql  =  "START TRANSACTION" ; $sql2  =  "INSERT INTO casa VALUES (NULL," . ...
  #1 (permalink)  
Antiguo 20/11/2006, 03:36
 
Fecha de Ingreso: junio-2004
Ubicación: ORENSE
Mensajes: 258
Antigüedad: 19 años, 10 meses
Puntos: 0
Problema con transacciones

Hola a todos,estoy trabajando con transacciones y tengo un problema.Mi codigo de la transaccion es:
Código PHP:
$sql "START TRANSACTION";
$sql2 "INSERT INTO casa VALUES (NULL,".$valores.")";
$sql3 "SELECT MAX(Id_Casa) FROM casa";
$sql4 "COMMIT";
$res $bd->consulta($sql);
$res2 $bd->consulta($sql2);
$res3 $bd->consulta($sql3);
$res4 $bd->consulta($sql4); 
Lo de insertar me lo hace bien,lo que pasa es que a la hora de devolver el max,siempre me devuelve el mensaje "Resource id #6".
Cual es el problema??
__________________
Inmuebles de Galicia:www.inmueblevirtual.net
Compartir piso en Galicia:www.inmueblevirtual.net/foro
  #2 (permalink)  
Antiguo 20/11/2006, 04:03
Avatar de holahola  
Fecha de Ingreso: mayo-2005
Ubicación: Móstoles - (Madrid)
Mensajes: 214
Antigüedad: 19 años
Puntos: 1
Hasta donde yo conozco, el uso de transacciones sql es útil para actualizar tablas dejándolas "a nivel", y es tras la finalización de la transacción cuando los datos pasan realmente a las tablas, para que en caso de un problema antes del commit, el gestor de sql deshaga lo hecho hasta el start transacction.

A mi parecer, la select se debería de hacer tras el commit.

Un saludo.
  #3 (permalink)  
Antiguo 20/11/2006, 04:25
 
Fecha de Ingreso: junio-2004
Ubicación: ORENSE
Mensajes: 258
Antigüedad: 19 años, 10 meses
Puntos: 0
Eso es verdad,solo almacena los datos en disco una vez hecho el commit.Un fallo mio,pero aunque haga la select despues del commit me sigue devolviendo lo mismo "Resource id #6".
__________________
Inmuebles de Galicia:www.inmueblevirtual.net
Compartir piso en Galicia:www.inmueblevirtual.net/foro
  #4 (permalink)  
Antiguo 20/11/2006, 04:41
Avatar de holahola  
Fecha de Ingreso: mayo-2005
Ubicación: Móstoles - (Madrid)
Mensajes: 214
Antigüedad: 19 años
Puntos: 1
Lo que no puedo ver es lo que haces en consulta().

De todas formas, si lo que quieres es saber el último id de tu tabla, no necesitas hacer una select: creo que php tiene tiene una función mysql que te lo devuelve, pero ahora no recuerdo cual es. Podrías verlo en el manual.
  #5 (permalink)  
Antiguo 20/11/2006, 04:45
 
Fecha de Ingreso: junio-2004
Ubicación: ORENSE
Mensajes: 258
Antigüedad: 19 años, 10 meses
Puntos: 0
En consulta lo unico que hago es un mysql_query(),es que tengo todo estructurado en clases,por eso o tengo asi.La query si que me la hace bien.
Ya he probado con la funcion de mysql que es LAST_INSERT_ID() y tampoco me funciona.
__________________
Inmuebles de Galicia:www.inmueblevirtual.net
Compartir piso en Galicia:www.inmueblevirtual.net/foro
  #6 (permalink)  
Antiguo 20/11/2006, 04:50
Avatar de holahola  
Fecha de Ingreso: mayo-2005
Ubicación: Móstoles - (Madrid)
Mensajes: 214
Antigüedad: 19 años
Puntos: 1
mysql_insert_id
  #7 (permalink)  
Antiguo 20/11/2006, 04:56
 
Fecha de Ingreso: junio-2004
Ubicación: ORENSE
Mensajes: 258
Antigüedad: 19 años, 10 meses
Puntos: 0
Tambien he probado a utilizar esa funcion y siempre me devuelve 0.
__________________
Inmuebles de Galicia:www.inmueblevirtual.net
Compartir piso en Galicia:www.inmueblevirtual.net/foro
  #8 (permalink)  
Antiguo 20/11/2006, 05:00
Avatar de holahola  
Fecha de Ingreso: mayo-2005
Ubicación: Móstoles - (Madrid)
Mensajes: 214
Antigüedad: 19 años
Puntos: 1
Hola bananas (acabo de darme cuenta que eres de Orense . Saludos a Galicia).

Es de suponer que el tipo de campo del id lo tienes como AUTO_INCREMENT ¿no?
  #9 (permalink)  
Antiguo 20/11/2006, 05:15
 
Fecha de Ingreso: junio-2004
Ubicación: ORENSE
Mensajes: 258
Antigüedad: 19 años, 10 meses
Puntos: 0
Gracias mostoles!!
Si el campo lo tengo a autoincrement,la tabla en BBDD es del tipo InnoDB para poder trabajar con transacciones.Pero no se lo que me pasa porque el valor no lo devuelve.
__________________
Inmuebles de Galicia:www.inmueblevirtual.net
Compartir piso en Galicia:www.inmueblevirtual.net/foro
  #10 (permalink)  
Antiguo 20/11/2006, 05:17
Avatar de holahola  
Fecha de Ingreso: mayo-2005
Ubicación: Móstoles - (Madrid)
Mensajes: 214
Antigüedad: 19 años
Puntos: 1
Cita:
Iniciado por bananas Ver Mensaje
Tambien he probado a utilizar esa funcion y siempre me devuelve 0.
Mira lo que dice el manual:

http://es2.php.net/manual/es/functio...-insert-id.php

Yo supongo que, si te devuelve 0 es porque no funcionó el insert (no insertó nada) ¿no?
  #11 (permalink)  
Antiguo 20/11/2006, 05:21
 
Fecha de Ingreso: junio-2004
Ubicación: ORENSE
Mensajes: 258
Antigüedad: 19 años, 10 meses
Puntos: 0
Si,eso ya lo se,lo curioso es que si que me inserta los valores en la BBDD,pero siempre devuelve 0.
Creo que ya se cual puede ser el problema,la ultima query mia es el commit y eso no inserta nada,porr eso devuelve siempre 0.
__________________
Inmuebles de Galicia:www.inmueblevirtual.net
Compartir piso en Galicia:www.inmueblevirtual.net/foro
  #12 (permalink)  
Antiguo 20/11/2006, 05:29
Avatar de holahola  
Fecha de Ingreso: mayo-2005
Ubicación: Móstoles - (Madrid)
Mensajes: 214
Antigüedad: 19 años
Puntos: 1
Hombre, según dice el manual, aunque hagas varias select posteriormente el valor del id devuelto por la función no se pierde.

Yo intentraría probar quitando el start transaction y su respectivo commit (según lo muestras en tu primer post, no lo necesitas ya que sólo haces un insert a una sola tabla).
  #13 (permalink)  
Antiguo 20/11/2006, 05:32
Avatar de holahola  
Fecha de Ingreso: mayo-2005
Ubicación: Móstoles - (Madrid)
Mensajes: 214
Antigüedad: 19 años
Puntos: 1
Por cierto: acabo de ver que en el insert, tras values, pones NULL.

Si ese null se corresponde con el campo id, yo creo que deberías quitarlo. Los campo autoincrement no se citan al insertar.
  #14 (permalink)  
Antiguo 20/11/2006, 05:42
 
Fecha de Ingreso: junio-2004
Ubicación: ORENSE
Mensajes: 258
Antigüedad: 19 años, 10 meses
Puntos: 0
Si quito el Null que efectivamente se me corsponde con el campo auto_increment,la sentencia no me la ejecuta,no se muy bien el porque?
He probado a hacer esto sin transacciones,solo con una sentencia insert y la select y sigue sin devolverme nada.
__________________
Inmuebles de Galicia:www.inmueblevirtual.net
Compartir piso en Galicia:www.inmueblevirtual.net/foro
  #15 (permalink)  
Antiguo 20/11/2006, 05:51
Avatar de holahola  
Fecha de Ingreso: mayo-2005
Ubicación: Móstoles - (Madrid)
Mensajes: 214
Antigüedad: 19 años
Puntos: 1
Por mi parte una última cosa (que supongo que no te estará pasando a tí:
Una vez quise averiguar el contenido de la variable de conexión y hice un echo, algo como echo $conexion, y me devolvía algo parecido a lo que tu indicas en el primer post

"Resource id #6"

Espero que encuentres cual es el problema... Un saludo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:34.