Foros del Web » Programando para Internet » PHP »

Consulta al ultimo ID insertado

Estas en el tema de Consulta al ultimo ID insertado en el foro de PHP en Foros del Web. Quisiera hacer un query sobre el ultimo Registro insertado. Creo que es algo asi: $result=mysql_db_query("agenda_de_trabajo","select * from datos where id='.mysql_insert_id().'"); Podria alguien, concretar la solución ...
  #1 (permalink)  
Antiguo 03/03/2003, 06:21
 
Fecha de Ingreso: febrero-2003
Mensajes: 204
Antigüedad: 14 años, 10 meses
Puntos: 2
Consulta al ultimo ID insertado

Quisiera hacer un query sobre el ultimo Registro insertado.
Creo que es algo asi:



$result=mysql_db_query("agenda_de_trabajo","select * from datos where id='.mysql_insert_id().'");

Podria alguien, concretar la solución ?

Josep
  #2 (permalink)  
Antiguo 03/03/2003, 06:45
Avatar de Maycol  
Fecha de Ingreso: diciembre-2001
Ubicación: Ávila (España)
Mensajes: 539
Antigüedad: 16 años
Puntos: 0
Código PHP:
$result=mysql_db_query("agenda_de_trabajo","select * from datos ORDER BY id desc LIMIT 1"); 
eso deberia funcionar
__________________
Zepsilon.com
Diseño e imaginacion
  #3 (permalink)  
Antiguo 03/03/2003, 12:25
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si ese "id" es autoincremental usa preferentemente:

mysql_insert_id() .. (función de PHP)
http://www.php.net/manual/en/functio...-insert-id.php

o su equivalente en SQL de Mysql:
LAST_INSERT_ID()

(en los comentarios de los usuarios del manual de PHP tienes ejemplos .. )

Un saludo,
  #4 (permalink)  
Antiguo 03/03/2003, 12:39
Avatar de Necros  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 431
Antigüedad: 15 años, 10 meses
Puntos: 0
Yo la verdad es q lo he realizado como dice Cluster, pero creo recordar que puede haber problemas de atomicidad, ya que la instruccion de insercion y de consulta de id no és un bloque unico de ejecución atómica... Aunque nunca me ha fallado,pero me ha dado que pensar...
__________________
By NeCrOS
FrEe WoRlD is FrEe CoDE
http://www.NeCrOS.com
  #5 (permalink)  
Antiguo 03/03/2003, 13:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Necros ..

Si crees que puedas tener problemas de "atomicidad" puedes bloquear la tabla que vas a ejecutar dicho bloque q contenga la versión SQL de obtención del último ID generado por ese campo autoincremental de esa tabla.

mas info:
http://www.mysql.com/doc/en/LOCK_TABLES.html

Un saludo,
  #6 (permalink)  
Antiguo 03/03/2003, 15:15
 
Fecha de Ingreso: febrero-2002
Ubicación: ¿donde vivo? pues en mi casa, ¿donde voy a vivir?...
Mensajes: 214
Antigüedad: 15 años, 9 meses
Puntos: 0
igual kedo como un pardillo, pero....

q coño es "atomicidad"?
__________________
Linux, es para los que odian Microsoft/Windows, BSD, es para los que amamos *IX.
  #7 (permalink)  
Antiguo 03/03/2003, 15:21
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Jeje ahí con la teoría me pillan .. Solo sé que se usa mucho cunado se habla de "transacciones" .. y en el manual de Mysql por lo menos aparece ese "terminio" (atomic .. igual mi traducción de andar por casa no es la correcta :cantar: ) en las funcioens de bloqueo de tablas y cosas así ..


Un saludo,
  #8 (permalink)  
Antiguo 03/03/2003, 16:04
Nok
 
Fecha de Ingreso: abril-2001
Mensajes: 302
Antigüedad: 16 años, 7 meses
Puntos: 0
Atomicidad se refiere a que la operacion se realice como si fuera en un solo paso. El problema existe cuando hay concurrencia, es decir varios script ejecutandose al mismo tiempo sobre los mismo datos. Por eso se utiliza la atomicidad para garantizar que ningun script "pise" al otro.

Por ejemplo:

supongamos que nuestro scritp hace lo siguiente:
-Insertar registro.
-Obtener ultimo registro.
-Mostrar Id.

Si se esta ejecutando un solo script no hay problema alguno. El problema es cuando se ejecutan mas de uno, supongamos lo siguiente:

Sp1: script 1
Sp2: script 2

Sp1 -Insertar registro.
Sp2 -Insertar registro.
Sp2 -Obtener ultimo registro.
Sp1 -Obtener ultimo registro.
Sp1 -Mostrar Id.
Sp2 -Mostrar Id.


Veamos que pasa, si prestan atencion el script 1 esta obteniendo la informacion incorrecta, pues antes de obtener el ultimo registro, se ejecuto el script 2 modificando asi el dato obtenido. Esto es asi aunque no lo crean, es decir los scripts se ejecutan "mezclados". Por esto hace falta la atomicidad, o sea forzar a que se ejecute primero uno y luego el otro, asi no ocurren este tipo de cosas.

Bueno, espero haber aportado en algo.

Saludos
Nok.
  #9 (permalink)  
Antiguo 03/03/2003, 16:08
 
Fecha de Ingreso: febrero-2002
Ubicación: ¿donde vivo? pues en mi casa, ¿donde voy a vivir?...
Mensajes: 214
Antigüedad: 15 años, 9 meses
Puntos: 0
ah, vale, "atomicidad", curioso nombre xD.
y pq coño no usan semaforos? es q eso de atomico, da mal rollo, a ver is va a explotar o algo xD

P.D, thx por la explicacion ;)
__________________
Linux, es para los que odian Microsoft/Windows, BSD, es para los que amamos *IX.
  #10 (permalink)  
Antiguo 03/03/2003, 16:21
Nok
 
Fecha de Ingreso: abril-2001
Mensajes: 302
Antigüedad: 16 años, 7 meses
Puntos: 0
es que justamente una de las maneras de lograr atomicidad es utilizando semaforos. Pasa que en este caso, conviene utilizar las herramientas que te brinda el motor gestor de base de datos. Simpletemente por eso.

Saludos.
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 12:03.