2016-10-27 17 views
0

私はこれに少し苦労しています。いくつか私は少し私を導くことを願っています。PHPを使用して配列からmysqlに値を挿入する

私は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

おそらく、この問題は助けることができます http://stackoverflow.com/questions/10054633/insert-array-into-mysql-database-with-php –

+0

BennyBoyは彼のコードに誤りがあります。最後は 'bind_param'です。私はDenizAktürkによって追加されたこのような問題は二重には見えません。 – Arnial

+1

@BennyBoyあなたは 'INSERT INTO ... SELECT'を使って他のテーブルにあなたの値を直接挿入することができます。 http://stackoverflow.com/a/37741763/3595565 phpで選択している製品データを検証する必要がない場合、これはあなたのケースを処理する良い方法になります – Philipp

答えて

1

各製品にアクセスするには、$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(); 
} 
+0

ありがとう、ありがとう!それは意味をなさない.......それを今得た、私はそれを試したとそれは素晴らしい動作します!私は本当にここの皆さんの助けに感謝します。 – BennyBoy

関連する問題