-2

このスクリプトの目的は、ユーザーがフォームに入力した製品の ProductID、前のスクリプトで作成された注文の ID を取得し、これら 2 つの値を order_line_item テーブルに入れることです。

「$db_productid」という変数に値がないためにエラーが発生することを確認しました。この値をデータベースに挿入すると、リンクできるその ID を持つ製品を検索しようとしますが、その製品がありません。 ID が 0 であるため、次のエラーが返されます。

子行を追加または更新できません: 外部キー制約が失敗しました ( the_shop. order_line_item, CONSTRAINT order_line_item_ibfk_1 FOREIGN KEY ( ProductID) REFERENCES product( 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」に表示され、この名前の製品が製品テーブルのデータベースにあることがわかりました

4

1 に答える 1

1

どういうわけか、私の先生は、このような変数を挿入する必要があるという印象を与えました

.$db_username.つまり、ユーザーが意図したとおりにユーザー名が保存されますが、エントリの前後にドットがあります...とにかく、それを行わずにレコードを挿入すると正常に機能します...先生がウェブサイトを見るのは面白いでしょうそれをしなくてもうまくいきます:)

于 2013-05-14T20:51:36.693 に答える