首页 > 解决方案 > 如何获取在 MySQL 中创建的生成外键以用于插入函数

问题描述

我正在运行以下 PHP,因为我想将表单中的数据插入到 2 个表中:EventLocation 和 Events(EventLocationID 是表事件中的外键)。首先,我运行一个 INSERT 查询以插入 EventLocation。由于 EventLocationID 是自动递增的,它会生成下一个 ID,而无需我输入任何内容。我的问题是我应该如何获取这个唯一 ID 以在下一个 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 函数来提高效率;我以前试过但没有成功?

标签: phpmysqlsqlinsertforeign-keys

解决方案


您可以使用mysqli_insert_id

$displayname = mysqli_insert_id($link);

id这将从当前连接中获取最后一个 auto_incremented值。


推荐阅读