2011-10-24 202 views
0

我是新來的PHP,我想弄清楚如何將下面的數組添加到名爲「skus」的MYSQL表。插入數組到MySQL表

每個子數組都是sku。

子數組中的每個值都是一個選項ID。 (即藍色,綠色,黃色等)

所以,我希望我的桌子看起來像這樣。

skuid optionid

的SKU編號是表的主鍵,當我加入optionid值將自動遞增。

Array 
(
    [0] => Array 
     (
      [2] => 27 
      [3] => 17 
     ) 

    [1] => Array 
     (
      [2] => 28 
      [3] => 17 
     ) 

    [2] => Array 
     (
      [2] => 27 
      [3] => 18 
     ) 

    [3] => Array 
     (
      [2] => 28 
      [3] => 18 
     ) 

) 
+1

到目前爲止你有什麼? –

+0

您需要遍歷數組並使用查詢來存儲值... – Dev

+0

您從哪裏獲取您的SKU ID?你不能只創建它 - 它應該連接到某個特定的SKU。 –

回答

-2

所以你的數組是:

$skus=array(
    [SKU] => Array(
     'option' => 27, 
     'option2' => 17 
    ) 
); 

一旦你創建你的MySQL表,你可以使用下面的陣列和輸入到表格排序:

$connect = mysql_connect(HOST,USER,PASS) or die(mysql_error()); 

$delim = ":"; 

$length = count($skus); 

foreach ($skus as $sku => $opt_array) { 

    $i = 0; 
    $opts = ''; 

    foreach ($opt_array as $option_id) { 
     if ($i == count($opt_array) { 
      $opts .= $option_id; 
     } else { 
      $opts .= $option_id . ","; 
     } 
     $i++; 
    } 

    $query = "INSERT INTO `skus` (sku,opt_id,opt_id2) VALUES ('" . $sku . "','" . $opts . "')"; 

    mysql_query ($query, $connect) or die (mysql_error()); 
} 

由於你說你的表中只有兩列,你的選項ID將不得不在你的表的同一個字段中。這就是爲什麼我將$ delim聲明爲選項ID之間的分隔符。

你通過數組的第一個循環實際查詢將是:

INSERT INTO `skus` (sku,opt_id,opt_id2) VALUES ('SKU','27', '17') 

等。

希望這會有所幫助。

+0

在數據庫中存儲(逗號)分隔值通常是一個糟糕的主意。嘗試編寫一個查詢來選擇所有具有選項27的SKU,例如。 – CodeCaster

+0

我完全意識到這一點...我以此爲例。如果這是我,我會分開表列。也許我應該指出這一點,而不是一起去。謝謝你說我幼稚。 – DBDev

+0

@DBDev:幼稚確實是一個歧視性的術語,比如Col Shrapnel使用它。 – hakre