Ho trovato alcune risposte per questo utilizzando mySQL da solo, ma speravo che qualcuno potesse mostrarmi un modo per ottenere l'ID dell'ultima riga inserita o aggiornata di un DB mysql quando si utilizza PHP per gestire gli inserti/gli aggiornamenti.ottenere mysql_insert_id() durante l'utilizzo ON DUPLICATE KEY UPDATE con PHP
Attualmente ho qualcosa come questo, in cui column3 è una chiave unica, e c'è anche una colonna id che è una chiave 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 è corretto su INSERT, ma non corretto quando è l'aggiornamento di un riga (ON DUPLICATE KEY UPDATE).
ho visto diversi posti con le persone consigliando di utilizzare qualcosa come
INSERT INTO table (a) VALUES (0) ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id)
per ottenere un valore di identità valido quando il ON DUPLICATE KEY è invoked-- ma sarà questo ritorno che di identità valido al PHP mysql_insert_id()
funzione?
Non ho la risposta. Ma la soluzione sembra intelligente. Perché non lo provi? Penserei che non dovrebbe essere difficile creare un test che darebbe una risposta definitiva. PS .: Non fraintendermi però; Posso capire che vorrai rassicurazione. Probabilmente lo farei anch'io. Ma proverei prima io indovino. :) –
Ero curioso di sapere come potesse funzionare, ma ho trovato questo nel manuale di MySQL: * Se expr è dato come argomento a LAST_INSERT_ID(), il valore dell'argomento viene restituito dalla funzione e viene ricordato come il valore successivo a essere restituito da LAST_INSERT_ID() *. –
@Alexandre: sì, e presumendo 'mysql_insert_id()' è solo un proxy di 'LAST \ _INSERT \ _ID()' Penso che questo dovrebbe funzionare come previsto. –