Ver Mensaje Individual
  #6 (permalink)  
Antiguo 09/02/2009, 17:14
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Repetir valor en sentencia sin UPDATE...

No. mysql_insert_id() devuelve el id insertado en la última consulta hecha en el request actual. Por lo tanto, si antes no hubo ningún INSERT, no devolverá nada.

Para obtener el id próximo a insertar podemos hacer una consulta a la bd preguntándoselo:

Código php:
Ver original
  1. obtener_siguiente_id($tabla) {
  2.     $result = mysql_query("SELECT LAST_INSERT_ID() FROM $tabla");
  3.     return mysql_num_rows($result) + 1;
  4. }
Otra forma es usando la sentencia SHOW TABLE STATUS
Código php:
Ver original
  1. function obtener_siguiente_id($tabla) {
  2.     $result = mysql_query("SHOW TABLE STATUS LIKE '$tabla'");
  3.     $row = mysql_fetch_assoc($result);
  4.     return $row['auto_increment'];
  5. }
La última forma es la más segura. Pero de cualquier forma, esto siempre conlleva una consulta extra, así que la manera más sencilla de lograr lo que deseas, adrewp, es hacer el insert, y usando mysql_insert_id() actualizar el registro ingresado.

EDITO: Para coger el return basta con asignar la función a una variable:

Código php:
Ver original
  1. $var = obtener_siguiente_id("tabla");


Última edición por okram; 09/02/2009 a las 17:22