このスクリプトの目的は、ユーザーがフォームに入力した製品の ProductID、前のスクリプトで作成された注文の ID を取得し、これら 2 つの値を order_line_item テーブルに入れることです。
「$db_productid」という変数に値がないためにエラーが発生することを確認しました。この値をデータベースに挿入すると、リンクできるその ID を持つ製品を検索しようとしますが、その製品がありません。 ID が 0 であるため、次のエラーが返されます。
子行を追加または更新できません: 外部キー制約が失敗しました (
the_shop
.order_line_item
, CONSTRAINTorder_line_item_ibfk_1
FOREIGN KEY (ProductID
) REFERENCESproduct
(ProductID
) ON DELETE CASCADE ON UPDATE CASCADE)
これは私のスクリプトです:
if (isset($_GET['submit1'])) {
$dblastid = $_SESSION['lastid'];
$db_product_name = $_GET['product_name'];
$query = "SELECT ProductID FROM product WHERE Product_Name = '$db_product_name'";
$result = mysql_query($query)
or die(mysql_error());
$fetch = mysql_fetch_assoc($result);
$db_productid = $fetch['ProductID'];
$lastid = $_SESSION['lastid'];
$query = "INSERT INTO `the_shop`.`order_line_item`(
`OrderID` ,
`ProductID`
)
VALUES (
'$lastid', '$db_productid')";
$result = mysql_query($query)
or die(mysql_error());
}
さらにデバッグすると、ユーザーがフォームに入力した文字列が「$db_product_name」に表示され、この名前の製品が製品テーブルのデータベースにあることがわかりました