Я запускаю следующий 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. Вы должны использовать подготовленные операторы.