#php
Допустим имеем такой код: $stmt = $pdo -> prepare("INSERT INTO users (email,password) VALUES (:email,:password)"); $stmt->bindParam(':email', $email); $stmt->bindParam(':password', $password); $stmt->execute(); $_SESSION['id'] = $pdo->lastInsertId(); Если бы я вызывал метод lastInsertId() у $stmt, то не задался бы следующим вопросом: lastInsertId() берет значение последнего id у объекта подключения к БД. Может ли случится такая ситуация, что из за нагрузки или чего либо другого $pdo->lastInsertId() вернет id следующего после регистрации пользователя, т.к. первому еще не успел взять значение id а второй уже прошел регистрацию и записал данные в базу. И следовательно в $pdo обновилось значение последнего id.
Ответы
Ответ 1
Вообще говоря не должно, lastInsertId() возвращает значение именно для последнего вставленного значения, для текущей сессии/соединения. Другие сессии/соединения никак не могу влиять на это значение. И ваш lastInsertId() не может попасть в параллельные сессии. Одновременно могут вставляться сотни строк, вы получите идентификатор именно вашего последнего INSERT-запроса.
Комментариев нет:
Отправить комментарий