2017-05-26 117 views
0
Array ([0] => Array ([0] => Array ([name] => Heart Choclates [code] => LFB-P-10 [qty] => 1 [type] => main [price] => 1200 [stock] => 5 [image] => choclates-valentines-day.jpg [quantity] => 12 [expdate] => May 27th 2017 [exptime] => 11:00 PM to 12:00 AM [expdtype] => Mid night delivery) [1] => Array ([name] => Birthday Pink [code] => KB-P-5 [qty] => 1 [type] => addon [price] => 600 [stock] => 7 [image] => pink-roses.jpg [expdate] => May 27th 2017 [exptime] => 11:00 PM to 12:00 AM [expdtype] => Mid night delivery)) [1] => Array ([0] => Array ([name] => Red & Yellow Roses [code] => KB-P-6 [qty] => 1 [type] => main [price] => 800 [stock] => 9 [image] => birthday-red-roses.jpg [expdate] => May 27th 2017 [exptime] => 11:00 PM to 12:00 AM [expdtype] => Mid night delivery) [1] => Array ([name] => Signature Cake [code] => KB-P-7 [qty] => 1 [type] => addon [price] => 0 [stock] => 9 [image] => signature-cake.jpg [expdate] => May 27th 2017 [exptime] => 11:00 PM to 12:00 AM [expdtype] => Mid night delivery) [2] => Array ([name] => Truffle Cake [code] => KB-P-8 [qty] => 1 [type] => addon [price] => 10 [stock] => 7 [image] => truffle-cake.jpg [expdate] => May 27th 2017 [exptime] => 11:00 PM to 12:00 AM [expdtype] => Mid night delivery))) 

我有一个像这样的数组..每个订单数组中的订单数组和数组。现在我需要将这些数组添加到数据库中,每行中的订单和产品由<br/>分隔。这怎么可能?提前致谢。在PHP中向数据库添加多维数组

我用它来打印代码。

<?php 
    session_start(); 
    error_reporting(0); 
    print_r($_SESSION["products"]); 
    foreach($_SESSION["products"] as $row => $temp){  
?>           
<div> 
<?php 
    foreach($temp as $innerRow => $cart_itm){ 
    ?> 
     <div><?php echo $cart_itm['code']; ?></div> 
    <?php 
    } 
    ?> 
</div> 
<?php 
} 
?> 

期待这个结果

enter image description here

enter image description here

enter image description here

+0

为什么你的意思是“'''现在我需要将这些数组添加到数据库中,每行中的订单和产品都由a'''”分隔? – mi6crazyheart

+0

对不起,突破是失踪。刚刚编辑 –

+0

再次你的意思是'''产品由
'''分隔?你能举出你预期的产出吗? – mi6crazyheart

回答

1

我希望这将让你开始:

$data = array(
    array(
     array(
      'name' => 'Heart Choclates', 
      'code' => 'LFB-P-10', 
      'qty' => '1' 
     ), 
     array(
      'name' => 'Birthday Pink', 
      'code' => 'KB-P-5', 
      'qty' => '1' 
     ) 
    ), 
    array(
     array(
      'name' => 'Red & Yellow Roses', 
      'code' => 'KB-P-6', 
      'qty' => '1' 
     ), 
     array(
      'name' => 'Signature Cake', 
      'code' => 'KB-P-7', 
      'qty' => '1' 
     ), 
     array(
      'name' => 'Truffle Cake', 
      'code' => 'KB-P-8', 
      'qty' => '1' 
     ) 
    ) 
); 

foreach($data as $row_item) 
{ 
    $row = array(); 

    foreach($row_item as $product) 
    { 
     foreach($product as $key => $value) 
     { 
      if(isset($row[ $key ])) 
       $row[ $key ] .= $value . ' <br> '; 
      else 
       $row[ $key ] = $value . ' <br> ';   
     } 
    } 

    //--- 
    echo 'Row: <br>'; 
    var_dump($row); 
    echo '<br><br>'; 

    //-- insert the contents of $row array into the database 
} 

输出:

enter image description here

您可以插入$row数组的内容到数据库中。


编辑

请注意,上面的回答是基于你问你的具体问题。

我还是不明白你到底在做什么。如果您试图存储订单的详细信息,那么这是一个很糟糕的方法来完成它!您应该保留单独的数据库表并使用关系连接在一起。这是关系数据库的用途!

例如,让两个表为tblOrderMastertblOrderDetails

这里,在tblOrderMaster表,主键将是order_id,你大概会要去商店总量,折扣金额,总服务税,订单日期,客户ID,订单状态等

tblOrderDetails表中,您将有多行,其中我们将存储特定订单的每个产品。例如,它会存储订单ID(外键),产品ID,单价,数量,税金,总金额(单位价格×数量)等等。

这是我认为的正确方法。

+0

仍然如何将它添加到数据库 –

+0

数据将在'$ row'变量中可用。只需将数组中存在的数据插入数据库! –

+0

我无法添加到数据库。但我可以打印它。我用数据库的屏幕截图更新了我的问题 –

2

尝试此示例代码。

$orderList[1001] = array(
     0 => array(
       'name' => 'Heart Choclates', 
       'code' => 'LFB-P-10', 
       'qty' => 1, 
       'type' => 'main', 
       'price' => 1200, 
       'stock' => 5, 
       'image' => 'choclates-valentines-day.jpg', 
       'quantity' => 12, 
       'expdate' => 'May 27th 2017', 
       'exptime' => '11:00 PM to 12:00 AM', 
       'expdtype' => 'Mid night delivery' 
      ), 
     1 => array(
       'name' => 'Birthday Pink', 
       'code' => 'KB-P-5', 
       'qty' => 1, 
       'type' => 'addon', 
       'price' => 600, 
       'stock' => 7, 
       'image' => 'pink-roses.jpg', 
       'quantity' => 3, 
       'expdate' => 'May 27th 2017', 
       'exptime' => '11:00 PM to 12:00 AM', 
       'expdtype' => 'Mid night delivery' 
      ) 
    ); 

$orderList[1002] = array(
     0 => array(
       'name' => 'Red & Yellow Roses', 
       'code' => 'KB-P-6', 
       'qty' => 1, 
       'type' => 'main', 
       'price' => 800, 
       'stock' => 9, 
       'image' => 'birthday-red-roses.jpg', 
       'quantity' => 10, 
       'expdate' => 'May 27th 2017', 
       'exptime' => '11:00 PM to 12:00 AM', 
       'expdtype' => 'Mid night delivery' 
      ) 
    ); 


echo '<pre>'; 
print_r($orderList); 
echo '<pre>'; 

$productList = array(); 

foreach ($orderList as $key => $value) 
{ 
    $names = array(); 
    $quantity = array(); 

    foreach ($value as $key1 => $value1) 
    { 
     $names[] = $value1['name']; 
     $quantity[] = $value1['quantity']; 
    } 

    $productList[$key]['names'] = implode('<br>', $names); // Used `:` insted of '<br>' for separator. But, You can use whatever you want. But, better don't use any HTML tag. 
    $productList[$key]['quantity'] = implode('<br>', $quantity); 
} 

echo '<pre>'; 
print_r($productList); 
echo '<pre>'; 


// Sample DATA INSERTION Query by PDO 
try { 
    $conn = new PDO('mysql:host=localhost;dbproductName=someDatabase', $userproductName, $password); 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

    // Prepare the query ONCE 
    $stmt = $conn->prepare('INSERT INTO someTable VALUES(:name, :quantity)'); 

    foreach ($productList as $key => $value) { 
     $productName = $value['names']; 
     $productQuantity = $value['quantity']; 

     $stmt->bindParam(':name', $productName); 
     $stmt->bindParam(':quantity', $productQuantity); 

     $stmt->execute(); 
    } 

} catch(PDOException $e) { 
    echo $e->getMessage(); 
} 

// Ref : https://code.tutsplus.com/tutorials/php-database-access-are-you-doing-it-correctly--net-25338 
+0

我在问如何将这个数据库作为不同的订单行添加到数据库中。我能够打印它 –

+0

由于输出是以数组的形式,所以你可以在任何循环中使用该数组,并相应地插入查询以将它们插入到数据库中。难度如何? – mi6crazyheart

+0

@SarathHari在代码示例底部添加了一个示例PDO查询插入操作,请检查以供参考从数据阵列中插入记录的问题 – mi6crazyheart