Я создаю запрос нового пароля, и для этой цели я создал отдельную таблицу под названием users_forgotpasscodes
, которая состоит из 3 полей user_id
, code
и requested
. Коды будут отправляться на электронные письма пользователей и будут действительны 1 день. Я решил пойти с отдельной таблицей вместо создания дополнительного столбца в моей таблице пользователей, потому что я предполагаю, что очень мало пользователей будет использовать эту функцию, поэтому нет смысла, чтобы все пользователи имели атрибут, который они, вероятно, не будут использовать ,PDO получить всю строку после вставки
Во всяком случае, что я наткнулся, когда пользователь переходит к «забыл пароль» страницу и вводит его адрес электронной почты, это то, что происходит
self::$db->prepare("INSERT INTO users_forgotpasscodes (id, code, requested) VALUES ((SELECT id FROM users WHERE email = ?), '{$code}', NOW())")->execute([$data['email']])
Проблема заключается в том, что я дальше в этом коде мне нужно идентификатор пользователя, чтобы можно было точно их перемещать из своего почтового ящика на нужную страницу, чтобы создать новый пароль.
Мой вопрос: могу ли я получить всю строку, которую я вставил, не делая другого запроса выбора?
Сложная часть заключается в том, что я не могу использовать lastInsertId()
, потому что столбец id
в таблице кодов не является первичным ключом, это просто обычный индекс, потому что один пользователь может отправлять несколько запросов такого характера, и я хочу иметь возможность поддерживать отслеживать их.
Что вы имеете в виду 'всей row'? Вы хотите вернуть столбец «ID»? – Rahul
@Rahul да, в основном, если я узнаю, как получить всю строку, я смогу получить идентификатор, я использовал этот заголовок, чтобы избежать путаницы с 'lastInsertId' и было бы легче найти, если кто-то ищет это –