私は、eコマースシステム内で注文された回線に関連する保存されたデータを処理する方法の背後にある私の論理であると想定することに問題があります。
2つのアレイがあります。1つの配列(orderedItems
)は、注文された製品に関連するさまざまな製品IDを追跡します。もう1つの配列(orderedItemQuantity
)は、さまざまな製品IDと、注文された製品の数量値を追跡します。
それでは、データをというテーブルに挿入し始めたいと思いますorder_items
。このテーブルには、id
(注文ID番号)、、、itemId
およびquantity
の4つの列があり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:コマンドが同期していません。現在、このコマンドを実行することはできません。if (!stmt2)
これは、句によってトリガーされます。
私がここから離れているかどうか誰かに教えてもらえますか?これは単に物事が機能する方法ではありません。もしそうなら、私がやろうとしていることの解決策を提案していただけませんか。
一方、これが可能である場合、それが私のために機能しない理由を私に説明してください。愛のためでもお金のためでも…それはただのことではありません、そして私はこの考えが根本的に欠陥があると思います。
これとあなたが共有したいと思うかもしれない提案、入力、アドバイスまたは知識を読んでくれてありがとう!