appena affrontato seguente situazione
file di post.php
che include un altro file (come insert.php
) Avere.
codice intero da inserire in mysql si trova insert.php
In insert.php
è codice $id_of_inserted_row = $db->lastInsertId();
Poi nel insert.php
è echo $id_of_inserted_row;
che mostra il valore corretto.
Ma echo $id_of_inserted_row;
in post.php
mostra un valore errato (come vedo 7 numeri inferiori al valore effettivo). Non capisco perché, solo bisogno di prendere in considerazione.
Aggiornamento
Siamo spiacenti, al di sopra scritto è stato perché inserita in due tabelle ed erroneamente utilizzato lo stesso $id_of_inserted_row = $db->lastInsertId();
per entrambe le tabelle.
Quindi ho la stessa conclusione di altre risposte: lastInsertId()
ottiene l'ID dell'ultima riga inserita.
Situazione fronte. Ho inserito 2 righe in mysql. In tal caso, vedo che lastInsertId() è l'id della prima riga inserita (non l'ultima). Non capisco perché ... risposta Trovato https://stackoverflow.com/a/12574752/2118559
Importante Se si inserisce più righe utilizzando una singola istruzione INSERT, LAST_INSERT_ID() restituisce il valore generato per solo la prima riga inserita. La ragione di ciò è di rendere possibile riprodurre facilmente la stessa istruzione INSERT contro altri server.
No, non ci saranno conflitti. L'id dell'inserto dipende dalla connessione e ogni caricamento della pagina stabilirà una nuova connessione. –
Dipende dal database sottostante. Se è mysql, PDO chiamerà semplicemente la funzione API mysql last_insert_id(), che garantisce che l'ID restituito sia l'ID generato dall'ultima query inserita eseguita dalla connessione PDO. –
possibile duplicato di [LAST_INSERT_ID() come funziona nell'ambiente multiutente] (http://stackoverflow.com/questions/5835677/last-insert-id-how-it-works-at-multi-users-environment) –