使用PHP从数组中插入mysql中的值

时间:2016-10-27 09:02:00

标签: php mysql arrays mysqli

我对此有点挣扎。希望有些人可以指导我一点。

我正在尝试使用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 
        ) 

)  

提前感谢您的帮助!

1 个答案:

答案 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();
}