Как получить сгенерированный внешний ключ, созданный в MySQL, для использования в функции вставки

Я запускаю следующий PHP, так как хочу вставить данные из формы в 2 таблицы: EventLocation и Events (EventLocationID — это внешний ключ в таблице Events). Сначала я запускаю запрос INSERT для вставки в EventLocation. Поскольку EventLocationID автоматически увеличивается, он генерирует следующий идентификатор без необходимости вводить что-либо. Мой вопрос: как мне получить этот уникальный идентификатор, который будет использоваться в следующем запросе INSERT для вставки в события?

Обратите внимание, что первый запрос вставляется нормально, но второй запрос выдает ошибку

PHP:

<?php
require '../dbh.inc.php';
$Event_Name = $_POST['Event_Name'];
$Event_Date = $_POST['Event_Date'];
$Street_1 = $_POST['Street_1'];
$Street_2 = $_POST['Street_2'];
$City = $_POST['City'];
$Start_Time = $_POST['Start_Time'];
$End_Time = $_POST['End_Time'];
$Zipcode = $_POST['Zipcode'];



$query = "INSERT INTO EventLocation (Street_1, Street_2, City, Zipcode) VALUES ('$Street_1', '$Street_2', '$City', '$Zipcode')";
$queryexecution = mysqli_query($conn, $query);


if (!$queryexecution){
  echo "damn, there was an error inserting into Event Location";
}
else {
  echo "Event Location was added!";
}

$querytwo = "SELECT EventLocationID from EventLocation where Street_1 = '$Street_1';";
$querytwoexecution = mysqli_query($conn, $querytwo);
while ($displayname = mysqli_fetch_assoc($querytwoexecution)){
     echo "<h1>".$displayname['EventLocationID']."</h1>";
}

$secinsert = "INSERT INTO events (Event_Name, Event_Date, Start_Time, End_Time, EventLocationID) VALUES ('$Event_Name','$Event_Date','$Start_Time','$End_Time', '$displayname')";
$secqueryexecution = mysqli_query($conn, $secinsert);
if (!$secqueryexecution){
  echo "damn, there was an error inserting into Events";
}
else {
  echo "Event data was added!";
}
 ?>

Мне любопытно узнать, могу ли я просто использовать функцию Inner Join, чтобы сделать ее более эффективной; Я пытался раньше, но безуспешно?

Ваш код уязвим для внедрения SQL. Вы должны использовать подготовленные операторы.

Dharman 27.05.2019 09:21
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
1
44
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете просто использовать mysqli_insert_id:

$displayname = mysqli_insert_id($link);

это извлечет последнее значение auto_incremented id из текущего соединения.

Другие вопросы по теме