2012-02-27 7 views
0

私はこの配列を持っています どのように私はこのデータをデータベースに挿入できますか? とどのように配列のいずれかの項目は、私が配列からの挿入は、PHPを使用してデータベースに複数のレベルを持っています

ID、PARENT_ID、レベル、順序を使用してデータベースにデータを挿入したい

[子供]を持っている場合、私がチェックすることができ

注:一部のアイテムが子アイテムを持っていますそして、いくつかの項目はありませんし、いくつかの子項目が子 を持って次のような私の配列

Array 
(
    [0] => Array 
     (
      [id] => 5 
      [children] => Array 
       (
        [0] => Array 
         (
          [id] => 4 
          [children] => Array 
           (
            [0] => Array 
             (
              [id] => 11 
             ) 

           ) 

         ) 

       ) 

     ) 

    [1] => Array 
     (
      [id] => 7 
      [children] => Array 
       (
        [0] => Array 
         (
          [id] => 9 
         ) 

       ) 

     ) 

    [2] => Array 
     (
      [id] => 6 
     ) 

    [3] => Array 
     (
      [id] => 8 
     ) 

    [4] => Array 
     (
      [id] => 10 
     ) 

) 
+0

この配列を保存するデータベース構造を表示してください。 – Astha

+0

@Astha明らかにフィールドを持つ1つのテーブル:id、parent_id、レベル、オーダー – Michal

答えて

0

使用再帰(7レベルは、私がorderはSを意味することになっているかわからないがありますそれは放置されている)。

function insert_array($children, $parent_id, $level){ 

    foreach($children as $child){ 
     insert_array_item( 
      $child, 
      $parent_id, 
      $level 
     ); 
    } 
} 

function insert_array_item($item, $parent_id, $level){ 

    //you need to get the $db here first 

    $statement = $db->prepare( 
     "INSERT INTO `table` 
      VALUES (:id, :parent_id, :level) 
     " 
    ); 
    $statement->bindParam(':id', $item['id']); 
    $statement->bindParam(':parent_id', $parent_id); 
    $statement->bindParam(':level', $level); 
    $statement->execute(); 

    if(isset($item['children'])){ 
     insert_array(
      $item['children'], 
      $parent_id = $item['id'], 
      $level + 1 
     ); 
    } 
} 

insert_array($array, 0, 0); 
関連する問題