我有一个问题,我认为我的逻辑是如何处理与电子商务系统中订购的行相关的存储数据。
我有两个数组。一个数组 ( orderedItems
) 跟踪与订购产品相关的各种产品 ID。另一个数组 ( orderedItemQuantity
) 跟踪各种产品 ID 以及订购产品的数量值。
所以现在我想开始将数据插入一个名为order_items
. 此表有四列,id
(订单 ID 号)itemId
、quantity
和totalValue
。因此,每个已订购的商品,都会在此表中添加一行,并插入与其对应的信息。
这是我想到的代码:
// Loop through ordered items
if ($stmt = $link->prepare("
SELECT name, price
FROM items i
IN (".join($_SESSION['orderedItems'], ',').")
"))
{
$stmt->execute();
$stmt->bind_result($itemName, $itemPrice);
while ($stmt->fetch())
{
$itemQuantity = sanitize($_SESSION['orderedItemQuantity']["$itemId"]);
$lineTotal = number_format($itemPrice * $itemQuantity, 2);
// Insert each item line to database \\
$stmt2 = $link->prepare("
INSERT INTO order_items SET
id = ?,
itemId = ?,
itemQuantity = ?,
lineValue = ?
");
if (!$stmt2)
{
$error = "Error {$link->errno} : {$link->error}";
include "$docRoot/html/main/error.html.php";
exit();
}
if (!$stmt2->bind_param("iiis", $orderId, $itemId, $itemQuantity, $lineTotal))
{
$error = "Error {$link->errno} : {$link->error}";
include "$docRoot/html/main/error.html.php";
exit();
}
if (!$stmt2->execute())
{
$error = "Error {$link->errno} : {$link->error}";
include "$docRoot/html/main/error.html.php";
exit();
}
$stmt2->close();
}
$stmt->close();
}
但是,当我尝试运行它时,我得到了 mysql 错误代码 2014:Commands out of sync; 您现在无法运行此命令。这是由if (!stmt2)
子句触发的。
有人可能会告诉我我是否离开这里,这根本不是事情的运作方式。如果是这种情况,您能否为我正在尝试做的事情提出解决方案。
另一方面,如果这是可能的,请您向我解释为什么它对我不起作用。因为爱情和金钱......它只是不会,我认为这个想法从根本上是有缺陷的。
感谢您花时间阅读本文以及您可能愿意分享的任何建议、意见、建议或知识!!