PHP 到 mySQL - 找到插入 ID 时复制条目

PHP to mySQL - duplicating entry when finding insert ID

我在向 MySQL 提交 PHP 表单时遇到问题 - 这是一个 multi_query 插入内容,应该提供两个 table。一切正常,但我最近建立了一个外键关系,并且在获取 mysqli_insert_id 的过程中,父 table 的条目导致第一个条目在 table - 使用我下面代码中的 table 名称,主 table 条目被插入两次,本地 table 条目被插入一次 $master_id 第一个主条目。我真的只对 PHP 有一个功能性的理解——有人能解释为什么会这样吗?我该如何解决这个问题,以便条目只插入到每个 table 中一次?

$conn = new mysqli($servername, $username, $password, $dbname);
    if ($conn->connect_error) {
       die("Connection failed: " . $conn->connect_error);
       } 

$date = $_POST['date'];
$time = $_POST['time'];
$latitude = $_POST['latitude'];
$longitude = $_POST['longitude'];
$accuracy = $_POST['accuracy'];
$species = $_POST['species'];

$sql = "INSERT INTO master (date, time, latitude, longitude, accuracy, species, source)
VALUES ('$date', '$time', '$latitude', '$longitude', '$accuracy', '$species', 'source A');";

mysqli_query($conn, $sql);
$master_id = mysqli_insert_id($conn);

$sql .= "INSERT INTO local (Master_ID, date, time, latitude, longitude, accuracy, species)
VALUES ('$master_id', '$date', '$time', '$latitude', '$longitude', '$accuracy', '$species');";

if ($conn->multi_query($sql) === TRUE) {
   $conn->close();
   header("Location:http://d-bird.org/thank%20you.html");
   } 
else {
   echo "Error: " . $sql . "<br>" . $conn->error;
   }

您正在将第二个插入添加到第一个。

改变

$sql .= "INSERT INTO local (Master_ID, date, time, ...

$sql = "INSERT INTO local (Master_ID, date, time, ...

应该可以解决您的问题。

$sql .= "INSERT INTO local (Master_ID, date, time, latitude, longitude, accuracy, species)
VALUES ('$master_id', '$date', '$time', '$latitude', '$longitude', '$accuracy', '$species');";

应该是

$sql = "INSERT INTO local (Master_ID, date, time, latitude, longitude, accuracy, species)
VALUES ('$master_id', '$date', '$time', '$latitude', '$longitude', '$accuracy', '$species');";

没有 $sql

的点连接