php - 将多维php数组插入mysql表

标签 php mysql arrays multidimensional-array

这是我的多维数组。我是 Php 的新手 ..我想输入名称、文件夹 ID 并将其上传到 sql 表中,但卡在数组部分。我需要帮助

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

                    )

            )

    )

)

这是我试图用来将数据插入表中的 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));
}

最佳答案

因为数组结构没有将文件子数组嵌套在文件夹子数组中,所以我假设文件夹的索引对应于文件的索引。

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(),则需要修改此代码段。

关于php - 将多维php数组插入mysql表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42233170/

相关文章:

arrays - Powershell:如何使用数组或哈希表作为内联查找

php - 使用 phpmyadmin 中的 php 显示产品项目无法正常工作的图像

php - 如何避免在不使用全局变量的情况下将数据库对象传递给每个模型对象?

php - 将您的表单字段命名为与 mysql 相同的名称实际上会带来任何安全风险吗?

PHP - 获取特定时区的当前时间

python - 从 numpy 数组创建图形顶点

php - MySQL in() 多维数组

php - 返回超过 13578 条记录时 Doctrine 查询失败

php - MySQL:当日期计数超过给定数量时选择日期范围内的数据

arrays - 如何将数组强制转换为匹配臂中的切片?