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
的点连接
我在向 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
的点连接