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

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


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

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

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

Войти через центр авторизации
Похожие вопросы