Foros del Web » Programando para Internet » PHP »

id de ultimo registro insertado

Estas en el tema de id de ultimo registro insertado en el foro de PHP en Foros del Web. Buenas noches, Esta es pregunta común: De que manera segura puedo obtener el id autoincrement de un registro acabado de insertar en una tabla?? De ...
  #1 (permalink)  
Antiguo 28/08/2008, 20:41
 
Fecha de Ingreso: abril-2004
Mensajes: 154
Antigüedad: 20 años, 7 meses
Puntos: 0
id de ultimo registro insertado

Buenas noches,

Esta es pregunta común:

De que manera segura puedo obtener el id autoincrement de un registro acabado de insertar en una tabla??

De manera manual e insegura lo puedo hacer consultando el MAX(id), pero existen otros métodos como cuando se utiliza PDO que es utilizando lastInsertId(). Pero cuando no utilizo PDO???

Mil gracias
__________________
Desdichado quien duerme en la mañana
  #2 (permalink)  
Antiguo 28/08/2008, 22:41
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 19 años, 2 meses
Puntos: 55
Respuesta: id de ultimo registro insertado

luego de un insert puedes usar mysql_insert_id(); para obtener el ultimo id que se guardo en la conexion actual

saludos
__________________
Degiovanni Emilio
developtus.com
  #3 (permalink)  
Antiguo 28/08/2008, 22:45
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: id de ultimo registro insertado

cabe mencionar, que, esta función resulta obsoleta en versiones superiores a PHP5

la manera correcta, y adecuada es... una consulta de SQL

Código:
SELECT LAST_INSERT_ID()
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 28/08/2008, 22:48
 
Fecha de Ingreso: abril-2004
Mensajes: 154
Antigüedad: 20 años, 7 meses
Puntos: 0
Respuesta: id de ultimo registro insertado

Cita:
Iniciado por pateketrueke Ver Mensaje
cabe mencionar, que, esta función resulta obsoleta en versiones superiores a PHP5

la manera correcta, y adecuada es... una consulta de SQL

Código:
SELECT LAST_INSERT_ID()
pero enviando una consulta, corro el riesgo de que en una aplicacion con decentas de transacciones pueda coger otro id, cosa que no ocurriria con la funcion no????
__________________
Desdichado quien duerme en la mañana
  #5 (permalink)  
Antiguo 28/08/2008, 22:57
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: id de ultimo registro insertado

de echo, internamente la función mencionada antes... hace lo mismo, entiendes??
(¿¿porque?? ... pues, porque la función mysql_insert_id() hace un llamado directo al API del SQL)

obviamente, si insertas dos elementos y después de ello quieres saber cual fue el primer "ultimo ID" pues no va a funcionar, ya que te dará el ultimo... realmente

mira, osea... lo ideal es...

haces un INSERT, y después otra consulta (o usar la función) ... es exactamente lo mismo
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 28/08/2008, 23:04
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 19 años, 2 meses
Puntos: 55
Respuesta: id de ultimo registro insertado

no es obsoleta solo dicen q tengan cuidado cuando el auti_increment es un bigint pq el resutlado no es el esperado
__________________
Degiovanni Emilio
developtus.com
  #7 (permalink)  
Antiguo 28/08/2008, 23:09
 
Fecha de Ingreso: abril-2004
Mensajes: 154
Antigüedad: 20 años, 7 meses
Puntos: 0
Respuesta: id de ultimo registro insertado

Cita:
Iniciado por pateketrueke Ver Mensaje
de echo, internamente la función mencionada antes... hace lo mismo, entiendes??
(¿¿porque?? ... pues, porque la función mysql_insert_id() hace un llamado directo al API del SQL)

obviamente, si insertas dos elementos y después de ello quieres saber cual fue el primer "ultimo ID" pues no va a funcionar, ya que te dará el ultimo... realmente

mira, osea... lo ideal es...

haces un INSERT, y después otra consulta (o usar la función) ... es exactamente lo mismo
Cuando me refiero a varios insert, hablo de que en distintas terminales estan ingresando datos. pero desde la mia, quiero saber exactamente el id del registro que yo ingrese. croe que no es lo mismo porque la funcion obtiene el valor justo cuando se hace el insert, como si lo retornara con el query. Mientras que el select, es una nueva consulta, que en caso de que en otra terminal hayan hecho un registro, va a tener un id diferente al que yo ingrese.

ALguien que nos de mas claridad sobre las posibles diferencias entre los dos métodos???

Gracias
__________________
Desdichado quien duerme en la mañana
  #8 (permalink)  
Antiguo 28/08/2008, 23:09
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: id de ultimo registro insertado

Cita:
pero enviando una consulta, corro el riesgo de que en una aplicacion con decentas de transacciones pueda coger otro id, cosa que no ocurriria con la funcion no????
Por lo que he leido en la documentacion de mysql_insert_id toma el ultimo ID creado con la conexion actual a la base de datos.
  #9 (permalink)  
Antiguo 28/08/2008, 23:12
 
Fecha de Ingreso: abril-2004
Mensajes: 154
Antigüedad: 20 años, 7 meses
Puntos: 0
Respuesta: id de ultimo registro insertado

Cita:
Iniciado por Ronruby Ver Mensaje
Por lo que he leido en la documentacion de mysql_insert_id toma el ultimo ID creado con la conexion actual a la base de datos.

Estoy de acuerdo. Creo que no es lo mismo que utilizar el select
__________________
Desdichado quien duerme en la mañana
  #10 (permalink)  
Antiguo 28/08/2008, 23:14
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: id de ultimo registro insertado

No estoy familiarizado con el funcionamiento de LAST_INSERT_ID()
Pero al juzgar por lo que dice pateketrueke, basicamente ambas funciones hacen lo mismo.

:P Y si pateketrueke dice que es asi, pues es asi. :P
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 21:17.