Frage an php, mysql, pdo – Wie kann ich sicherstellen, dass lastInsertId () des PDO nicht das einer anderen gleichzeitigen Einfügung ist?

8

Ich mache ein Anmeldeformular mit einemINSERT SQL-Abfrage mit PDO. Nach diesem INSERT möchte ich das extrahierenuserid (Auto Incrementing, Primärschlüssel), die gerade erstellt wurde, undINSERT es in eine andere Tabelle (eine "Bestätigungscode" -Tabelle)

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

Soll ich einen Weg finden, den Tisch zu verschließen? Soll ich Transaktionen verwenden?

Deine Antwort

2   die antwort
10

lastInsertId() Gibt den Bezeichner der zuletzt eingefügten Zeile zurückauf dieser VerbindungDaher werden gleichzeitige Benutzer (mit unterschiedlichen Verbindungen zur Datenbank) nicht gestört.

Hallo, danke für deine Antwort. Ich werde das dann ohne Sorge nutzen. Grüße alexx0186
1

Sie können dies vermeiden, indem Sie eine Auswahl per E-Mail oder in einem eindeutigen Feld vornehmen. Dadurch wird garantiert, dass Sie die richtige Benutzer-ID erhalten.

Zum Beispiel:

select id from user_table where email = '[email protected]' limit 1;
Hallo, ich wollte die lastInsertId () verwenden, aber ich werde deinen Tipp im Hinterkopf behalten. Danke vielmals. alexx0186
Ja, kein Problem. Ich habe auch etwas Neues gelernt. Gohn67

Verwandte Fragen