2011-10-24 21 views
0

私はphpには新しく、以下の配列を "skus"というMYSQLテーブルに追加する方法を解明しようとしています。MySQLテーブルに配列を挿入する

各サブアレイはskuです。

サブアレイ内の各値はオプションIDです。 (青、緑、黄色など)

だから、私のテーブルはこのように見えます。

SKUID optionid

は、SKU IDは、テーブルの主キーであると私は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がテーブル内の同じフィールドになければなりません。これは、オプションID間の区切り文字として$ delimを宣言した理由です。配列による最初のループのための

あなたの実際のクエリは次のようになります。

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

のように。

これが役に立ちます。

+0

データベースに(カンマ)区切りの値を格納することは、一般的には悪い考えです。たとえば、オプション27を持つすべてのSKUを選択するクエリを作成します。 – CodeCaster

+0

私はこれを完全に認識しています...私はそれを例として使用していました。これが私だったら、別々のテーブルの列があります。たぶん私はそれを持って行くよりもむしろこれを指摘すべきだったのだろう。私は幼稚だと言ってくれてありがとう。 – DBDev

+0

@DBDev:Childishは確かにCol. Shrapnelのような差別的用語です。 – hakre

関連する問題