0

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

$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;
   }
4

2 回答 2

2
$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 的点连接

于 2016-01-08T21:09:29.060 回答
1

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

改变

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

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

应该解决您的问题。

于 2016-01-08T21:09:08.760 回答