【发布时间】:2016-10-27 09:02:00
【问题描述】:
我对此有点挣扎。希望有人能指导我一点。
我正在尝试获取 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
)
)
提前感谢您的帮助!
【问题讨论】:
-
或许这个问题可以帮到你stackoverflow.com/questions/10054633/…
-
BennyBoy 的代码有错误。最后
bind_param。我在 Deniz Aktürk 添加的问题或重复中看不到任何类似的内容。 -
@BennyBoy 您可以使用
INSERT INTO... SELECT将您的值直接插入到另一个表中。 stackoverflow.com/a/37741763/3595565 如果您不必验证您在 php 中选择的产品数据,这将是处理您的案例的好方法 -
我已经编辑了我的第一篇文章,我相信这会更好。
-
@Philipp,感谢 Phillip 的提示,我正在尝试理解您向我展示的示例的合成器。对您的问题,如果选择插入在某些时候失败,交易是否仍然可以撤销?因为我有多个查询,并希望将它们全部放入一个事务中。谢谢。