Задать вопрос
@pasterh

Как правильно получить и записать последний id?

Есть модель и контроллер в контроллере через post получаются данные и оправляются в модель записываясь в разные таблицы.
В первой таблице так же надо получить последний id что бы записать его в следующую.
$sql = 'INSERT INTO user ( login,  email, password) '
                . 'VALUES (:login, :email,  :password)';
$result = $db->prepare($sql);
        $result->bindParam(':login', $login, PDO::PARAM_STR);
        $result->bindParam(':email', $email, PDO::PARAM_STR);
        $result->bindParam(':password', $password, PDO::PARAM_STR); 
        $result->execute();
        $userid=$db->lastInsertId();
        return $userid;

В вторую таблицу данные тоже приходя из контроллера.
$sql = 'INSERT INTO person ( userid,  surname, name, birthday, sex)'
                . 'VALUES (:userid, :surname, :name,:birthday, :sex, )';
        $result = $db->prepare($sql);
        $result->bindParam(':userid', $userid, PDO::PARAM_INT);
        $result->bindParam(':surname', $surname, PDO::PARAM_STR);
        $result->bindParam(':name', $name, PDO::PARAM_STR);
        $result->bindParam(':birthday', $birthday, PDO::PARAM_STR);
        $result->bindParam(':sex', $sex, PDO::PARAM_STR);
        return $result->execute();

Как правильно получить последний id из первой таблицы и записать его в следующую.
  • Вопрос задан
  • 355 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 1
@matios
Technical Team Lead
1. Если у вас 2 разные формы, которые нужно связать через userId, то после сохранения первой формы, вы получаете id сохранённой записи и при показе второй формы поставляете полученный id в hidden поле user_id, которое будет отправляться на сервер вместе со второй формой
2. Если все данные отправляются одним запросом, то все ещё проще. При сохранении данных в первой таблице полученный id передаёте вместе с остальными данными в метод для сохранения второй части и записываете этот id в колонку user_id
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы