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 и тогда обновятся другие записи. Чтобы избежать такого, можно использовать сессии или как то шифровать значение.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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