Wie kann ich sicherstellen, dass PDOs lastInsertId () nicht das eines anderen simultanen Einfügens ist?

8

Ich mache ein Anmeldeformular mit einer INSERT SQL-Abfrage mit PDO. Nach diesem INSERT möchte ich den userid (automatisch inkrementieren, Primärschlüssel), der gerade erstellt wurde, und INSERT it in eine andere Tabelle (eine "Bestätigungscode" -Tabelle)

extrahieren

Aber wie kann ich sicherstellen, dass diese Benutzer-ID nicht die eines zweiten Benutzers ist, der 1/1000 Sekunde später als der erste Benutzer registriert hat?

Sollte ich eine Möglichkeit finden, den Tisch zu verriegeln? Sollte ich Transaktionen verwenden?

    
alexx0186 23.05.2012, 00:34
quelle

2 Antworten

10

lastInsertId() gibt den Bezeichner der letzten Zeile zurück, die auf dieser Verbindung eingefügt wurde , so dass gleichzeitige Benutzer (mit verschiedenen Verbindungen zur Datenbank) nicht stören.

    
eggyal 23.05.2012, 00:42
quelle
1

Sie können dies vermeiden, indem Sie eine Auswahl durch die E-Mail oder ein eindeutiges Feld treffen. Das garantiert, dass Sie die richtige Benutzer-ID erhalten.

Zum Beispiel:

%Vor%     
Gohn67 23.05.2012 00:38
quelle

Tags und Links