我一直在尝试将数据从我的网页插入到数据库中的多个表中,我真的搞不清楚!
我有这个页面,用户可以作出一个新的订单,首先他需要采取客户的细节
name, age, email etc.
还有他的车的细节
the car model and the year of fabrication
在我的数据库中,我有两个被链接的表1-客户(Client_id(PK),名称,电子邮件,id_Car(fK),第二个是汽车(id_Car,model,year_of_fabrication)。
我的主键是Auto_Incremented的,所以我不必传递值。
我认为问题出在我的外键上,因为从网站上,我没有向Clients表传递任何值,但我不知道如何同时向Clients和cars表中插入数据。
这是我的订单表格。
<form action="include/comanda.inc.php">
<div class="comanda">
<h2 id="titlu">Detaliile clientului:</h2>
<label for="client">Numele clientului: </label>
<input type="text" name="client">
<label for="client">CNP: </label>
<input type="text" name="cnp">
<label for="client">Sex: </label>
<select name="sex" id="sex">
<option value="M">M</option>
<option value="F">F</option>
</select>
<label for="client">Email: </label>
<input type="text" name="email">
<label for="client">Sector: </label>
<select name="sector" id="sectorCl">
<option value="1">Sector 1</option>
<option value="2">Sector 2</option>
<option value="3">Sector 3</option>
<option value="4">Sector 4</option>
<option value="5">Sector 5</option>
<option value="6">Sector 6</option>
</select>
<label for="client">Marca masina: </label>
<input type="text" name="masina">
<!-- DROPDOWN LIST CU ANII DE LA 2020 LA 2000-->
<label for="client">Anul Fabricatiei: </label>
<select name="an_fabricatie" id="an_masina">
<option value="2020">2020</option>
<option value="2019">2019</option>
<option value="2018">2018</option>
<option value="2017">2017</option>
<option value="2016">2016</option>
<option value="2015">2015</option>
<option value="2014">2014</option>
<option value="2013">2013</option>
<option value="2012">2012</option>
<option value="2011">2011</option>
<option value="2010">2010</option>
</select>
这是我的命令脚本:
<?php
if(isset($_POST["creaza_comanda"])){
require 'dbh.inc.php';
$nume = $_POST["client"];
$cnp = $_POST["cnp"];
$sex = $_POST["sex"];
$email = $_POST["email"];
$sector = $_POST["sector"];
$masina = $_POST["masina"];
$an_fabricatie = $_POST["an_fabricatie"];
$angajat = $_POST["nume-angajat"];
$den_furnizor = $_POST["den_furnizor"];
$oras_furnizor = $_POST["oras_furnizor"];
$piesa = $_POST["productName"];
$pret = $_POST["price"];
if(!preg_match("/^[a-zA-Z ]*$/", $nume)){
header("Location: ../comanda_noua.php?eroare");
exit();
}else if(!preg_match("/^[0-9]*$/",$cnp)){
header("Location: ../comanda_noua.php?msg2");
exit();
}else if (!filter_var($email, FILTER_VALIDATE_EMAIL)){
header("Location: ../comanda_noua.php?msg2");
exit();
}else {
$sql = "INSERT INTO masini (marca, an_fabricatie) VALUES ('$masina', $an_fabricatie);";
if(mysqli_query($conn,$sql)){
header("Location: ../comanda_noua.php?succes");
exit();
}else{
echo "Error ". $sql . ":-" . mysqli_error($conn);
}
mysqli_close($conn);
}
header("Location: ../comanda_noua.php");
exit;
}
谢谢!
您只需从主表中获取最后一个insert行id,并将其作为外键传递给派生表。 当您使用DOM对象向Cars表中插入数据时,您需要在下面写一行:
$sql = "INSERT INTO masini (marca, an_fabricatie) VALUES ('$masina', $an_fabricatie);";
if(mysqli_query($conn,$sql)){
$last_id = $conn->insert_id; // this will gives you last inserted id
// just after this you can add data to another table
$sql1 = "INSERT INTO Clients (<column_name>) VALUES ('<values>');"; // change column name and values here;
if(mysqli_query($conn,$sql1)){
// after all data insert add your next logic code here.or simply redirect it.
}
}
或者您也可以通过以下方式获取ID:
$last_id = mysqli_insert_id($conn);
试试这个,我想这个会帮你的。