he encontrado algunas respuestas para esta usando MySQL solo, pero yo estaba esperando que alguien me puede mostrar una manera de obtener el ID de la última fila insertada o actualizada una base de datos MySQL cuando usa PHP para manejar las inserciones/actualizaciones.conseguir mysql_insert_id(), mientras que el comando ON DUPLICATE KEY UPDATE con PHP
Actualmente tengo algo como esto, donde las columnas 3 es una clave única, y también hay una columna de ID que es una clave primaria autoincremented:
$query ="INSERT INTO TABLE (column1, column2, column3) VALUES (value1, value2, value3) ON DUPLICATE KEY UPDATE SET column1=value1, column2=value2, column3=value3";
mysql_query($query);
$my_id = mysql_insert_id();
$ my_id es correcto en INSERT, pero incorrecta cuando se actualiza una row (ON DUPLICATE KEY UPDATE).
he visto varios mensajes con la gente aconsejando que utilice algo como
INSERT INTO table (a) VALUES (0) ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id)
para obtener un valor de identidad válido cuando el EN llave duplicada es invoked-- sino que este retorno que una identificación válida a la PHP mysql_insert_id()
¿función?
No tengo la respuesta. Pero la solución parece inteligente. ¿Por qué no lo intentas? Pensaría que no debería ser difícil crear un caso de prueba que diera una respuesta definitiva. PD .: Aunque no me malinterpreten; Puedo entender que quieras tranquilizarme. Probablemente también. Pero lo probaría primero, supongo. :) –
tenía curiosidad cómo podría funcionar, pero me encontré con esto en el manual de MySQL: * Si expr se da como argumento para LAST_INSERT_ID(), el valor del argumento es devuelto por la función y es recordado como el siguiente valor a ser devuelto por LAST_INSERT_ID() *. –
@Alexandre: sí, y suponiendo que 'mysql_insert_id()' es solo un proxy para 'LAST \ _INSERT \ _ID()' Creo que esto debería funcionar como se esperaba. –