n1croo
@n1croo
Front-end developer

Как правильно создать запрос MySQL?

Есть две формы, первая форма обязательная для заполнения, вторая нет. Если просто прописывать два запроса, то данные из форм записываются в разные строки. Мне нужно, чтобы можно было записать данные из первой и второй формы в одну строку. Но может возникнуть ситуация, когда пользователь не заполнит вторую форму, а если заполнит - нужно вставить данные из второй формы в строку с данными первой.

<?php
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$birthdate = $_POST['birthdate'];
$repsubject = $_POST['subject'];
$country = $_POST['country'];
$phone = $_POST['phone'];
$email = $_POST['email'];
$company = $_POST['company'];
$position = $_POST['position'];
$about = $_POST['about'];

$connect = new PDO('mysql:host=192.168.1.4;dbname=invitation;charset=utf8', 'n1cro', 'XRT6IPLkeK5DyYzc');

$sql = 'INSERT INTO users '. '(firstname, lastname, birthdate, repsubject, country, phone,'. ' email)'. 'VALUES '. '(:fname, :lname, :bdate, :rsubject, :country, :phone,'. ':email)';

$result = $connect->prepare($sql);

$result -> bindParam(':fname', $firstname, PDO::PARAM_STR);
$result -> bindParam(':lname', $lastname, PDO::PARAM_STR);
$result -> bindParam(':bdate', $birthdate, PDO::PARAM_STR);
$result -> bindParam(':rsubject', $repsubject, PDO::PARAM_STR);
$result -> bindParam(':country', $country, PDO::PARAM_STR);
$result -> bindParam(':phone', $phone, PDO::PARAM_STR);
$result -> bindParam(':email', $email, PDO::PARAM_STR);
$result -> execute();

$result = null;
$connect = null;
  • Вопрос задан
  • 80 просмотров
Решения вопроса 1
@rodion11
php dev
После вставки, нужно получить id добавленной записи.
$insert_id = $result->lastInsertId();

Далее при выводе второй формы включить этот id в форму
<input name="id" type="hidden" value="<?=$insert_id;?>">


При обработке второй формы, вы получите этот id и будет ясно какую запись нужно обновить.

Стоит учитывать что пользователь может подменить id и тогда обновятся другие записи. Чтобы избежать такого, можно использовать сессии или как то шифровать значение.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@zaregan
У вас форма скорее всего одна, просто разбита на два блока? Или как вы сабмитите обе формы одновременно?

Т.е. вам надо просто проверить данные второй формы и, если там пусто, замапить данными с первой.

Если же формы разные, тогда вам при сабмите первой формы надо получать ид, и передавать во вторую, и делать уже апдейт, а не инсерт.
Ответ написан
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы
Badoo Development Москва
от 140 000 до 180 000 руб.
Badoo Development Москва
от 180 000 до 250 000 руб.
Zaymigo Нижний Новгород
До 35 000 руб.