我对此有点挣扎。希望有些人可以指导我一点。
我正在尝试使用mysql中的购物车篮子产品(在这种情况下不是会话)并将其移至结账时的“订单详情”表。
产品数组创建正常并正确输出键和值但我的问题是当我尝试将数组值插入另一个表时。
以下是代码:
$cart_products = array();
$stmt = $conn->prepare("SELECT
SUM(co.cart_quantity) AS quantity,
p.product_id,
p.product_name,
SUM(p.product_price) AS price,
p.short_description,
SUM(p.product_weight) AS weight,
p.vat
FROM cart_orders AS co
LEFT JOIN products AS p
ON co.cart_product_id = p.product_id
LEFT JOIN vat_rates AS vr
ON p.vat = vr.vat_id
WHERE cart_user_id = ?
GROUP BY co.cart_product_id
ORDER BY co.cart_product_id");
$stmt->bind_param('i', $user_id);
$stmt->bind_result($quantity,$p_product_id,$p_product_name,$price,$p_short_description,$weight,$p_vat);
$stmt->execute();
$stmt->store_result();
if($stmt->num_rows() > 0){
while ($stmt->fetch()) {
$cart_products[] = array(
"product_id" => $p_product_id,
"product_name" => $p_product_name,
"product_quantity" => $quantity,
"product_price" => $price,
"vat_id" => $p_vat
);
}}
$stmt->free_result();
$stmt->close();
$stmt = $conn->prepare("INSERT INTO order_details(product_id,product_name,product_quantity,product_price,vat_id)
VALUES (?,?,?,?,?)");
$stmt->bind_param('isiii', $cart_products['product_id'],$cart_products['product_name'],$cart_products['product_quantity'],$cart_products['product_price'],$cart_products['vat_id']);
$stmt->execute();
$stmt->close();
这是我的数组$ cart_products的输出:
Array
(
[0] => Array
(
[product_id] => 5
[product_name] => Product A
[product_quantity] => 20
[product_price] => 2.50
[vat_id] => 2
)
[1] => Array
(
[product_id] => 7
[product_name] => Product A
[product_quantity] => 10
[product_price] => 2.50
[vat_id] => 1
)
[2] => Array
(
[product_id] => 9
[product_name] => Product A44544
[product_quantity] => 3
[product_price] => 2.50
[vat_id] => 2
)
)
提前感谢您的帮助!
答案 0 :(得分:0)
您必须遍历$cart_products
以访问每个产品。
$cart_products = array();
if ($stmt->num_rows() > 0) {
while ($stmt->fetch()) {
$cart_products[] = array(
"product_id" => $p_product_id,
"product_name" => $p_product_name,
"product_quantity" => $quantity,
"product_price" => $price,
"vat_id" => $p_vat
);
}
}
$stmt->free_result();
$stmt->close();
$stmt = $conn->prepare("INSERT INTO order_details(product_id,product_name,product_quantity,product_price,vat_id)
VALUES (?,?,?,?,?)");
foreach ($cart_products as $cart_product) {
$stmt->bind_param('isiii', $cart_product['product_id'], $cart_product['product_name'], $cart_product['product_quantity'], $cart_product['product_price'], $cart_product['vat_id']);
$stmt->execute();
}