2017-02-14 3 views
1

Dies ist die multidimensionale Array ich habe. Ich bin neu zu PHP .. Ich möchte den Namen, OrdnerID und Upload in eine SQL-Tabelle eingeben, aber bin am Array-Teil fest. Ich brauche HilfeEinfügen Multidimensional PHP-Array in MySQL-Tabelle

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 

        ) 

      ) 

    ) 

) 

hier die MySQL-Insert-Code ist, dass ich Daten in die Tabelle zu verwenden versucht einzufügen, aber alles, was ich in der Datenbank erhalten sind Nullen

$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)); 
} 

Antwort

0

Da die Struktur Array nicht Verschachteln Sie das Datei-Subarray innerhalb des Ordner-Subarrays. Ich gehe davon aus, dass die Indexe der Ordner den Indexen der Dateien entsprechen.

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"])); 
} 

Misstrauisch, hat $data["result"]["files"][$index]["folderid"] nicht $subarray["id"] in Ihrer Probe Array entsprechen.

Dieses Codefragment muss geändert werden, wenn array_search() für folderid erforderlich ist.