Foros del Web » Programando para Internet » PHP »

Devolver el proximo Id de un registro autoincrementable

Estas en el tema de Devolver el proximo Id de un registro autoincrementable en el foro de PHP en Foros del Web. Resulta que yo lo hacia en mysql con esta sentencia Código PHP: SELECT AUTO_INCREMENT FROM information_schema . tables WHERE TABLE_SCHEMA = 'base de dato'  AND  TABLE_NAME = 'nombre de mi tabla'  Pero ahora me puse ...
  #1 (permalink)  
Antiguo 15/08/2012, 11:27
Avatar de hackcrack  
Fecha de Ingreso: abril-2011
Mensajes: 331
Antigüedad: 13 años
Puntos: 9
Devolver el proximo Id de un registro autoincrementable

Resulta que yo lo hacia en mysql con esta sentencia


Código PHP:
SELECT AUTO_INCREMENT FROM information_schema.tables WHERE TABLE_SCHEMA='base de dato' AND TABLE_NAME='nombre de mi tabla' 
Pero ahora me puse a trabajar en PDO y vi un parametro llamado "lastInsertId". Esto lo que haria seria devolverte el id del ultimo registro tambien, porque lo ejecuto como aparece en la documentacion y siempre me devuelve un "0"?
__________________
Los mejores juegos de PC gratis en ******
  #2 (permalink)  
Antiguo 15/08/2012, 11:35
Avatar de yandorf  
Fecha de Ingreso: julio-2012
Mensajes: 40
Antigüedad: 11 años, 8 meses
Puntos: 6
Respuesta: Devolver el proximo Id de un registro autoincrementable

Saludos,

si el ID es auto incrementable podrías agarrar SELECT MAX(id)+1 FROM ...

Espero haber entendido bien tu pregunta.
__________________
"Se necesita una razón para ayudar a alguien?"
Zidane Trival
  #3 (permalink)  
Antiguo 15/08/2012, 11:36
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Devolver el proximo Id de un registro autoincrementable

Te devuelve el último ID Generado después de una consulta INSERT, no lo puedes ejecutar así por si solo, tiene que ser primero un INSERT y después el lastInsertId.

Saludos.
  #4 (permalink)  
Antiguo 15/08/2012, 11:54
Avatar de hackcrack  
Fecha de Ingreso: abril-2011
Mensajes: 331
Antigüedad: 13 años
Puntos: 9
Respuesta: Devolver el proximo Id de un registro autoincrementable

El problema yandorf con eso, es que si elimino la ultima entrada que es por ejem id "7", y ahora el ultimo id es "6", el proximo id no va a ser "7" sino "8".

Gracias GatorV, no sabia que se tenia que ejecutar despues de un query insert.
__________________
Los mejores juegos de PC gratis en ******
  #5 (permalink)  
Antiguo 15/08/2012, 22:45
Avatar de yandorf  
Fecha de Ingreso: julio-2012
Mensajes: 40
Antigüedad: 11 años, 8 meses
Puntos: 6
Respuesta: Devolver el proximo Id de un registro autoincrementable

Cierto, Había olvidado ese detalle.

Podrías hacer lo siguiente SHOW TABLE STATUS LIKE 'nombre_tabla' y obtener 'Auto_increment'
__________________
"Se necesita una razón para ayudar a alguien?"
Zidane Trival
  #6 (permalink)  
Antiguo 16/08/2012, 04:12
Avatar de oNefl0w189  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 117
Antigüedad: 14 años
Puntos: 4
Respuesta: Devolver el proximo Id de un registro autoincrementable

Cita:
Iniciado por hackcrack Ver Mensaje
El problema yandorf con eso, es que si elimino la ultima entrada que es por ejem id "7", y ahora el ultimo id es "6", el proximo id no va a ser "7" sino "8".

Gracias GatorV, no sabia que se tenia que ejecutar despues de un query insert.
Es el problema que tiene el auto_increment, que aunque borres un registro no te lo vuelve a crear con ese ID.
Aún así, y por si crees que te va mejor, lo puedes hacer mediante un trigger en BD, o en php en una consulta recogiendo el último valor que tienes y sumandole 1, de esta manera si borras uno el siguiente si será el correcto y no uno mas..
__________________
Nunca dijeron que la vida sería fácil, sólo prometieron que valdría la pena vivirla.

Dar las gracias y añadir Karma, no cuesta nada, ¿Que menos si te ayudan? :)

Etiquetas: autoincrementable, devolver, mysql, registro, tabla
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 06:30.