2017-02-14 18 views
1

これは私が持っている多次元配列です。私はPHPに新しいです。私は名前、folderidを入力し、SQLテーブルにアップロードするが、配列の部分で立ち往生です。私はここ 多次元php配列をmysqlテーブルに挿入

Array 
(
[status] => 200 
[msg] => OK 
[result] => Array 
    (
     [folders] => Array 
      (
       [0] => Array 
        (
         [id] => 1861013 
         [name] => .videothumb 
        ) 

      ) 

     [files] => Array 
      (
       [0] => Array 
        (
         [name] => wildlife.mp4 
         [cblock] => 
         [sha1] => d5d4e1001f98f70324ef4f84ccd6d683f653c513 
         [folderid] => 1861011 
         [upload_at] => 1487016733 
         [status] => active 
         [size] => 558253404 
         [link] => link here 
         [download_count] => 0 
         [cstatus] => ok 

        ) 

      ) 

    ) 

) 

iは、テーブルにデータを挿入するために使用しようとしたMySQLの挿入コードで助けが必要ですが、配列構造がないので、私は、データベースに取得するすべての

$st = $dbh->prepare("INSERT INTO movies(name, upload_at, link, folderid)  
    VALUES (:field1, :field2, :field3, :field4)"); 


// bind variables to insert query params 

     $st->bindParam(1, $name); 
     $st->bindParam(2, $uploadat); 
     $st->bindParam(3, $link); 
     $st->bindParam(4, $folderid); 




    $json = file_get_contents($filename); 

//convert json object to php associative array 

$data = json_decode($json, true); 





// loop through the array 
foreach ($data as $item) 
{ $name = $item['result']['folders'][0]['id']; 
    $uploadat = $item['result']['files'][0]['upload_at']; 
    $link = $item['result']['files'][0]['link']; 
    $folderid = $item['result']['files'][0]['folderid']; 

    echo $name; 
    echo $folderid; 
    // execute insert query 
    $st->execute(array(':field1'=>$name, 
         ':field2'=>$uploadat, 
         ':field3'=>$link, 
         ':field4'=>$folderid)); 
} 

答えて

0

ゼロですフォルダの部分配列の中にファイルの部分配列を入れ子にすると、フォルダのインデックスがファイルのインデックスに対応していると仮定しています。

foreach($data["result"]["folders"] as $index=>$subarray){ 
    $st->execute(array(':field1'=>$subarray["id"], 
         ':field2'=>$data["result"]["files"][$index]["uploadat"], 
         ':field3'=>$data["result"]["files"][$index]["link"], 
         ':field4'=>$data["result"]["files"][$index]["folderid"])); 
} 

疑い深く、$data["result"]["files"][$index]["folderid"]はあなたのサンプル配列に$subarray["id"]と一致していません。

folderidarray_search()が必要な場合は、このスニペットを変更する必要があります。