我有一個使用HTML表單和PHP代碼的小型數據庫項目。除了最後一部分外,它正在完美地工作。基本上,我有我的數據庫連接設置,並在我的PHP中工作,並點擊添加按鈕時,它應該從窗體插入值到數據庫。我的老師說,由於表格的限制,它必須按照一定的順序插入,基本上先列出表格,然後再列出員工表格。如果我將員工的部分代碼註釋掉,則會顯示我的成功確認頁面,並且每次使用自動遞增的address_id時,地址都會顯示在數據庫中。問題是我應該查詢MAX(Address_id)並使用它來插入職員部分,因爲它使用address_id作爲外鍵。當我這樣做時,在更新級聯上會出現外鍵約束錯誤。如果我完全拔出INSERT人員代碼,並將「調試」打印出MAX(address_id),則它會正確打印。我只是無法正確地將其插入到工作人員表中,以便我的表單中的所有內容都可以創建工作人員記錄。以下是代碼:PHP/MYSQL選擇MAX值並將其用作插入值
$userQuery = "INSERT INTO address (address, district, city_id, postal_code, phone)
VALUES ('$address', '$district', '$city', '$postal_code', '$phone') ";
$addressResult = mysqli_query($connect, $userQuery);
if (!$addressResult)
{
die("Could not successfully run query ($userQuery) from $db: " .
mysqli_error($connect));
}
$maxQuery = "SELECT MAX(address_id) FROM address";
$result = mysqli_query($connect, $maxQuery);
$row = mysqli_fetch_assoc($result);
if (!$result)
{
die("Could not successfully run query ($userQuery) from $db: " .
mysqli_error($connect));
}
/**else
{
print ("<p>Average hourly wage:".$row['MAX(address_id)']."</p>");
}**/
$userQuery1 = "INSERT INTO staff (first_name, last_name, address_id, email, store_id)
VALUES ('$first_name', '$last_name', '$row', '$email', '$store_id')";
$staffResult = mysqli_query($connect, $userQuery1);
if (!$staffResult)
{
die("Could not successfully run query ($userQuery1) from $db: " .
mysqli_error($connect));
}
else
{
print(" <h1>New Staff Record Added!</h1>");
print ("<p>The following record was added:</p>");
print("<table border='0'>
<tr><td>First Name</td><td>$first_name</td></tr>
<tr><td>Last Name</td><td>$last_name</td></tr>
<tr><td>Email</td><td>$email</td></tr>
<tr><td>Store ID</td><td>$store_id</td></tr>
<tr><td>Address</td><td>$address</td></tr>
<tr><td>City</td><td>$city</td></tr>
<tr><td>District</td><td>$district</td></tr>
<tr><td>Postal Code</td><td>$postal_code</td></tr>
<tr><td>Phone</td><td>$phone</td></tr>
</table>");
}
而不是使用'MAX()',只需使用'mysqli_insert_id'。這將從前面的INSERT語句中返回ID – LeeR
執行'INSERT'後,可以使用'mysqli_insert_id($ connect)'獲取分配的ID。你也可以在MySQL查詢中使用'LAST_INSERT_ID()'來獲得它。 'MAX(address_id)'是一個不好的方法。 – Barmar
所以我將能夠把mysqli_insert_id($連接)插入到我的職員表插入查詢?那會插入最後創建的ID從第一次插入? –