将json导入mysql

时间:2016-10-28 11:00:48

标签: php mysql json

我有这个json文件

{
    "5927803e892d4c459f2992a3a1ac2ead.16": {
        "lat": 57.532696,
        "lng": 9.949331
    },
    "e25fe65e4fe4468db1361213ba1a376b.16": {
        "lat": 57.501783,
        "lng": 9.947415,
        "name": "Vidstrup Train Station",
        "disabled": false
    },
    "dcd8b44bd0f3478cb2d99c8d5115ba50.16": {
        "lat": 57.480323,
        "lng": 9.968769,
        "name": "Vellingshøj Station",
        "disabled": false
    }
}

我有一个工作的php文件来导入它 但我真的很想要这个ID 我的问题是在json文件中 它没有名称,例如" id":""

 <?php  
 //  
 $connect = mysqli_connect("localhost", "xxxxx", "xxxxxx", "Rails");  
 $filename = "location-export.json";  
 $data = file_get_contents($filename);  
 $array = json_decode($data, true);  
 foreach($array as $row)  
 {  
      $sql = "INSERT INTO location(location_lat, location_lng, location_name, location_mission) VALUES ('".$row["lat"]."', '".$row["lng"]."','".$row["name"]."', '".$row["mission"]."')";       
      mysqli_query($connect, $sql);       
 }  
 echo "Data Inserted";  
 ?> 

1 个答案:

答案 0 :(得分:0)

按如下方式更改您的代码

 foreach($array as $id => $row)  
 {  
      $sql = "INSERT INTO location(id, location_lat, location_lng, location_name, location_mission) VALUES ('{$id}','".$row["lat"]."', '".$row["lng"]."','".$row["name"]."', '".$row["mission"]."')";       
      mysqli_query($connect, $sql);       
 }  
 echo "Data Inserted";  
 ?> 

但当然这比使用预备语句完全不安全(并且可能更慢)。

你应该试试

$stmt = mysql_prepare($link, "INSERT INTO location(id, location_lat, location_lng, location_name, location_mission) VALUES(?,?,?,?)");

 foreach($array as $id => $row)  
 {  
        mysqli_stmt_bind_param($stmt,"ssss", $id,  $row["lat"], ....);
        mysqli_stmt_execute($stmt);


 }