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?
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.
lastInsertId() returns the identifier of the last row inserted on that connection, so concurrent users (with different connections to the database) will not interfere.
You can avoid this by doing a select by the email or some unique field. That will guarantee you get the correct user id.
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;