Pytanie w sprawie pdo, mysql, php – Jak mogę się upewnić, że lastInsertId () PDO nie jest innym insertem symultanicznym?

8

Robię formularz rejestracji za pomocąINSERT Zapytanie SQL przy użyciu PDO. Po tym WSTAWIE chcę wyodrębnićuserid (automatyczne zwiększanie, klucz podstawowy), który został właśnie utworzony, orazINSERT do innej tabeli (tabela „kod potwierdzenia”)

Ale jak mogę się upewnić, że ten identyfikator użytkownika nie jest drugim użytkownikiem, który zarejestrował 1/1000 sekundy później pierwszego użytkownika?

Czy powinienem znaleźć jakiś sposób na zablokowanie stołu? Czy powinienem korzystać z transakcji?

Twoja odpowiedź

2   odpowiedź
1

dokonując wyboru za pomocą wiadomości e-mail lub jakiegoś unikalnego pola. To gwarantuje, że otrzymasz prawidłowy identyfikator użytkownika.

Na przykład:

select id from user_table where email = '[email protected]' limit 1;
Cześć, chciałem użyć lastInsertId (), ale będę pamiętać o twojej wskazówce. Wielkie dzięki. alexx0186
Tak, nie ma problemu. Nauczyłem się też czegoś nowego. Gohn67
10

lastInsertId() zwraca identyfikator ostatniego wstawionego wierszaw związku z tym, więc współbieżni użytkownicy (z różnymi połączeniami z bazą danych) nie będą przeszkadzać.

Cześć, dziękuję za odpowiedź. Użyję tego bez obaw. pozdrowienia alexx0186

Powiązane pytania