dongxia2030 2016-06-25 11:39
浏览 113

如何使用PHP foreach循环将多个嵌套的json对象插入到mysql中?

{
  {
    "empid":805475,
    "personal":{
        "name":"ABC",
        "gender":"Male",
        "age":28,
        "address":{
        "streetaddress":"Subhash Nagar",
        "city":"Agra",
        "state":"Uttarpradesh",
        "postalcode":209111
        }
    },
    "profile":{
        "designation":"Coder",
        "department":" Software dev."
    }
},
{
    "empid":814475,
    "personal":{
        "name":"PQR",
        "gender":"Male",
        "age":18,
        "address":{
        "streetaddress":"Subhash Nagar",
        "city":"Delhi",
        "state":"Delhi",
        "postalcode":110022
        }
    },
    "profile":{
        "designation":"Coder",
        "department":" Software dev."
    }
},
{
    "empid":805795,
    "personal":{
        "name":"MNP",
        "gender":"Male",
        "age":38,
        "address":{
        "streetaddress":"Subhash Nagar",
        "city":"Meerut",
        "state":"Uttarpradesh",
        "postalcode":209111
        }
    },
    "profile":{
        "designation":"Coder",
        "department":" Software dev."
    }
},
{
    "empid":805197,
    "personal":{
        "name":"AMN",
        "gender":"Male",
        "age":29,
        "address":{
        "streetaddress":"Subhash Nagar",
        "city":"Mathura",
        "state":"Uttarpradesh",
        "postalcode":546125
        }
    },
    "profile":{
        "designation":"Coder",
        "department":" Software dev."
    }
  }    
}

This is the json data i wanted to save into Mysql using PHP. Here is my code that is working fine for only a single json object (for e.g.- ABC only) but shows error for more than one object. PHP Code:

//convert json object to php associative array
$data = json_decode($json, true);

//get the employee details
$id = $data['empid'];
$name = $data['personal']['name'];
$gender = $data['personal']['gender'];
$age = $data['personal']['age'];
$streetaddress = $data['personal']['address']['streetaddress'];
$city = $data['personal']['address']['city'];
$state = $data['personal']['address']['state'];
$postalcode = $data['personal']['address']['postalcode'];
$designation = $data['profile']['designation'];
$department = $data['profile']['department'];

//insert into mysql table
$sql = "INSERT INTO tbl_emp(empid, empname, gender, age, streetaddress, city, state, postalcode, designation, department)
VALUES('$id', '$name', '$gender', '$age', '$streetaddress', '$city', '$state', '$postalcode', '$designation', '$department')";
if(!mysql_query($sql,$con))
{
    die('Error : ' . mysql_error());
}

?> so this is the php code that is working for one object but i donot know how to insert the whole json file data at once into mysql DB.

  • 写回答

1条回答 默认 最新

  • dqf67993 2016-06-25 12:09
    关注

    How is your table? Do you wish to build an SQL Query String from the JSON Data? In the Code below, there are a lot of assumptions which may or may not fit with your intentions but still are valid for starters:

        <?php
            $jsonData = '[
              {
                "empid"     : 805475,
                "personal"  : {
                    "name"      : "ABC",
                    "gender"    : "Male",
                    "age"       : 28,
                    "address"   : {
                        "streetaddress" : "Subhash Nagar",
                        "city"          : "Agra",
                        "state"         : "Uttarpradesh",
                        "postalcode"    : 209111
                    }
                },
                "profile":  {
                    "designation"   : "Coder",
                    "department"    : " Software dev."
                }
            },
    
            {
                "empid"     : 814475,
                "personal"  :{
                    "name"      : "PQR",
                    "gender"    : "Male",
                    "age"       : 18,
                    "address"   : {
                        "streetaddress" : "Subhash Nagar",
                        "city"          : "Delhi",
                        "state"         : "Delhi",
                        "postalcode"    : 110022
                    }
                },
                "profile"   :{
                    "designation"   : "Coder",
                    "department"    : " Software dev."
                }
            },
    
            {
                "empid"     : 805795,
                "personal"  : {
                    "name"      : "MNP",
                    "gender"    : "Male",
                    "age"       : 38,
                    "address"   : {
                        "streetaddress":"Subhash Nagar",
                        "city"          : "Meerut",
                        "state"         : "Uttarpradesh",
                        "postalcode"    : 209111
                    }
                },
                "profile"   :{
                    "designation"   : "Coder",
                    "department"    : " Software dev."
                }
            },
    
            {
                "empid"     :805197,
                "personal"  : {
                    "name"      : "AMN",
                    "gender"    : "Male",
                    "age"       : 29,
                    "address"   : {
                        "streetaddress" : "Subhash Nagar",
                        "city"          : "Mathura",
                        "state"         : "Uttarpradesh",
                        "postalcode"    : 546125
                    }
                },
                "profile"   : {
                    "designation"   : "Coder",
                    "department"    : " Software dev."
                }
              }
        ]';
    
    
            //  WE ASSUME YOUR TABLE-NAME IS my_table JUST FOR DEMONSTRATION:
            $tblName    = "`my_table`";
    
            // CONVERT JSON DATA TO NATIVE PHP OBJECT
            $objJson    = json_decode($jsonData);
    
            // CREATE A VARIABLE TO HOLD THE SQL (QUERY STRING)
            $arrSQL     = array();
    
    
            foreach ($objJson as $key => $data) {
                $tmpSQL    = "INSERT INTO " . $tblName . "(empid, name, gender, age, streetaddress, city, state, postalcode, designation, department)";
                $tmpSQL   .= " VALUES('{$data->empid}', '{$data->personal->name}', '{$data->personal->gender}', '{$data->personal->age}', ";
                $tmpSQL   .= "'{$data->personal->address->streetaddress}', '{$data->personal->address->city}', '{$data->personal->address->state}', '{$data->personal->address->postalcode}', ";
                $tmpSQL   .= "'{$data->profile->designation}', '{$data->profile->department}' )";
                $arrSQL[]  = $tmpSQL;
            }
    
            // NOW YOU CAN JUST USE IMPLODE TO CREATE THE STRING EQUIVALENT OF THE SQL QUERY:
            $strSQL = implode(";
    
    ", $arrSQL);
    
            var_dump($arrSQL);
            var_dump($strSQL);
    

    Test it out HERE.

    评论

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料