此脚本的目的是获取用户已输入表单的产品的ProductID,已在先前脚本中创建的订单的ID,然后将这两个值放入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'并且具有此名称的产品位于产品表
中的数据库中答案 0 :(得分:1)
出于某种原因,我的老师给人的印象是我们需要插入像这样的变量
.$db_username.
意味着用户名将按照用户的意图存储,但在条目之前和之后有点...无论如何现在插入记录而不这样做并且它工作正常...会很有趣让我的老师看到一个工作正常的网站而不这样做:)