2012-05-23 3 views
8

Sto facendo un modulo di iscrizione con una query SQL INSERT utilizzando PDO. Dopo questo INSERT, voglio estrarre il userid (autoincremento, chiave primaria) appena creato e INSERT in un'altra tabella (una tabella "codice di conferma")Come posso assicurarmi che l'ultimoInsertId() di PDO non sia quello di un altro inserto simultaneo?

Ma come posso assicurarmi che questo id utente sia non quello di un secondo utente che ha registrato 1/1000 di secondo dopo il primo utente?

Devo trovare un modo per bloccare il tavolo? Dovrei usare le transazioni?

risposta

10

lastInsertId() restituisce l'identificatore dell'ultima riga inserita su quella connessione, così utenti simultanei (con differenti connessioni al database) non interferiranno.

+0

Ciao, grazie per la tua risposta. Lo userò quindi senza preoccupazioni. Saluti – alexx0186

1

È possibile evitare questo facendo una selezione dall'e-mail o un campo unico. Questo ti garantirà l'id utente corretto.

Ad esempio:

select id from user_table where email = '[email protected]' limit 1; 
+0

Ciao, volevo usare lastInsertId() ma terrò a mente il tuo suggerimento. Molte grazie. – alexx0186

+0

Sì, nessun problema. Ho imparato anche qualcosa di nuovo. – Gohn67