HTMLページのフォーム値をPHPでデータベースに挿入しましたが、これを別のテーブルに結合する必要があります。 1つのクエリによってアドレステーブルに値が挿入され、これが機能します。アドレス照会からMAXID値を引いた後、それを使用して他の値を 'staff'表に入力する必要があります。スタッフテーブルクエリをコメントアウトすると、それが動作します。コードがアクティブであるとき、私はこのエラーを取得:PHP/MySQLに値を挿入する際の外部キー制約エラー
Could not successfully run query
(INSERT INTO staff (first_name, last_name, address_id, email, store_id) VALUES ('Hunter', 'Norman', '', '[email protected]', '2'))
from sakila: Cannot add or update a child row: a foreign key constraint fails (sakila
.staff
, CONSTRAINTfk_staff_address
FOREIGN KEY (address_id
) REFERENCESaddress
(address_id
) ON UPDATE CASCADE)
私は、以前連想インデックスを修正するために役立ったが、それでもエラーがありました。コードは次のとおりです:
$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>Max Address ID:".$row['MAX(address_id)']."</p>");
}
$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')";
$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>");
}
実際に住所の有効な値を受け取っていることを確認しましたか?アドレステーブルには何も含まれていますか?印刷された最大アドレスIDは何ですか? –
はい、アドレステーブルには既に600以上のレコードがあります。私はテストとしてフォームを提出していますが、アドレスの挿入クエリだけで増分を続け、データベースにはフォームが反映されます。私がスタッフの部分をコメントアウトしてMAX(address_id)を印刷すると、644,645が印刷されます。 –
を提出するたびに、私はこれをupvotedしました。 – Drew