[英]SQL PHP Insert issue
干杯,
所以,我有一個“父表”,我需要在其中插入一些東西。 “父表” - FILES 包含
id_file
id_cust - foreign key for idcust from table Customers
register_date
id_object - foreign key for idcust from table Objects
表客戶
idcust
cust_name
address
phone
表對象
idobject
name_object
我創建了一個 HTML 表單來插入一個包含 2 個組合框和注冊日期的新文件
<form method="post" action="">
<tr>
<td>Customer name: </td> <td>
<select name="cust_name">
<?php
$sql = mysqli_query($conn, "SELECT * FROM customers");
while ($row = $sql->fetch_assoc()){
echo "<option value=\"cust_name1\">" . $row['cust_name'] . "</option>";
}?>
</select></td></tr>
<tr>
<td>Register date</td>
<td> <input type="date" name="register_date"/></td>
</tr>
<tr>
<td>Object: </td> <td>
<select name="object">
<?php
$sql = mysqli_query($conn, "SELECT * FROM objects");
while ($row = $sql->fetch_assoc()){
echo "<option value=\"name_object1\">" . $row['name_object'] . "</option>";
}?>
</select></td></tr>
<tr><td colspan=2> <input name ="submit" type="submit" value="Add a new file"></td>
</tr></form>
我嘗試過的:
從昨天開始,我嘗試了很多查詢,這是最后一個:
<?php
$conn = mysqli_connect("localhost", "root", "", "testdb");
if ($conn -> connect_error){
die("Connection failed:". $conn-> connect_error);
}
if(!empty($_POST['submit'])){
$cust_name = $_POST['cust_name'];
$register_date = date('Y-m-d',strtotime($_POST['register_date']));
$name_object =$_POST['name_object'];
$sql = "INSERT INTO files VALUES (
(SELECT * FROM customers c WHERE c.cust_name = $cust_name),
$register_date,
(SELECT * FROM objects o WHERE o.name_object = $name_object)
)";
$conn->query($sql);
if($conn->error){
echo $conn->error;
} else
{
$message= "We have added the file no. " .$conn->insert_id;
}
}
?>
我嘗試過 LEFT JOIN,但沒有成功......你能幫我解決這個問題嗎? 謝謝你。
代碼有幾個問題,因為你有它。 首先,在這一行中,您需要名為name_object
的表單字段的值。
$name_object =$_POST['name_object'];
但沒有這樣的表格名稱。 因此,要么更改該代碼以使用正確的字段名稱,要么更改表單以使用此名稱。 指出不同:
<select name="object">
在這里:
echo "<option value=\"cust_name1\">" . $row['cust_name'] . "</option>";
和這里:
echo "<option value=\"name_object1\">" . $row['name_object'] . "</option>";
您將每個下拉列表的值設置為相同的值,它們都是文本字符串,幾乎可以肯定不在您的其他表中。 只需在顯示表單時在表單上執行“查看源代碼”即可了解我的意思。
更改上面的內容以使用每個表的唯一標識,這會將它們傳遞給您的表單處理代碼。 一旦進入那里,您需要做的就是
$sql = "INSERT INTO files (id_cust, register_date, id_object)
VALUES ($cust_name, $register_date, $name_object)";
在您對各種值進行了一些驗證並修復了字段名稱問題之后。
當然,一旦它開始工作,您就會希望將其更改為使用准備好的語句,而不僅僅是將字符串連接到查詢中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.