I am doing a signup form with an INSERT
SQL query using PDO. After this INSERT, I want to extract the userid
(auto incrementing, primary key) that was just created, and INSERT
it into another table (a “confirmation code” table)
But how can I make sure that this userid is not that of a second user who registered 1/1000th of a second later that the first user?
Should I find some way of locking the table? Should I use transactions?
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
lastInsertId()
returns the identifier of the last row inserted on that connection, so concurrent users (with different connections to the database) will not interfere.
Method 2
You can avoid this by doing a select by the email or some unique field. That will guarantee you get the correct user id.
For example:
select id from user_table where email = '<a href="https://getridbug.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="f386809681b3969e929a9fdd909c9e">[email protected]</a>' limit 1;
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0