[英]PHP/MYSQL Selecting a MAX value and using it as an inserted value
我有一個使用HTML表單和PHP代碼的小型數據庫項目。 除了最后一部分,它運行正常。 基本上,我已經建立了數據庫連接並在PHP中工作,並且在單擊“添加”按鈕后,它應該將表單中的值插入數據庫。 我的講師說,由於表的限制,必須按一定順序插入它,基本上首先要先尋址表,然后才是職員表。 如果我注釋掉了代碼的人員部分,則每次成功確認頁面都會出現,並且地址會以自動遞增的address_id出現在數據庫中。 問題是我應該查詢一個MAX(Address_id)並將其用於插入人員部分,因為它使用address_id作為外鍵。 當我這樣做時,我在更新級聯上收到外鍵約束錯誤。 如果我完全拔出INSERT員工代碼,並放入“調試”以打印MAX(address_id),則打印正確。 我只是無法正確地將其插入人員表,以便表單中的所有內容都創建人員記錄。 這是代碼:
$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>");
}
您沒有調用正確的關聯索引。 您只是在調用數組:
$userQuery1 = "INSERT INTO staff (first_name, last_name, address_id, email, store_id) VALUES ('$first_name', '$last_name', '{$row['MAX(address_id)']}', '$email', '$store_id')";
檢查您的查詢。 您無法從數據庫正確獲取數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.