【问题标题】:Getting JSON Array Data into MySQL将 JSON 数组数据导入 MySQL
【发布时间】:2020-12-07 02:13:51
【问题描述】:

我对如何访问这些数据并将其导入 MySQL 感到非常困惑 我有这个 JSON 数据:

{
   "serial_number": "70-b3-d5-1a-00-be",
   "dateTime": "2020-08-14 20:58",
   "passReport": [
      {
         "id": 1,
         "passList": [
            {
               "passType": 1,
               "time": "20:58:38"
            }
         ]
      }
   ]
}

我可以很好地获得 serial_numberdateTime,但是我无法将 passTypetime 输入我的数据库

这是我的注入代码:

//read the json file contents
$jsondata = file_get_contents('php://input');
//convert json object to php associative array
$data = json_decode($jsondata, true);

//mySQL creds & mySQL database & tables
$servername = "localhost";
$username = "my user";
$password = "my pass";
$dbname = "my db";
$serial_number = $data['serial_number'];
$dateTime = $data['dateTime'];
$id = $data['id'];
$passType = $data['passType'];
$time = $data['time'];


// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
  die("Connection failed: " . mysqli_connect_error());
}

//Insert into Database Tables
$sql = "INSERT INTO mytable (serial_number, dateTime, passType, time)
VALUES('$serial_number', '$dateTime', '$passType', '$time')";

if (mysqli_query($conn, $sql)) {
  echo "New record created successfully";
} else {
  echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}

mysqli_close($conn);


?>

我对 PHP 很陌生,正在努力学习!感谢这里的任何帮助。我没有足够的知识来访问数组中的数据。提前谢谢!

【问题讨论】:

  • 谢谢!!!谢谢更有意义......这正是我想要的。我想了很多,但我不知道如何在另一个数组中访问那个特定的数组。再次感谢。

标签: php mysql arrays json


【解决方案1】:
<?php
//You can use var_dump to see the structure of decoded json, then you can access.
$jsondata = '{"serial_number":"70-b3-d5-1a-00-be","dateTime":"2020-08-14 20:58","passReport":[{"id":1,"passList":[{"passType":1,"time":"20:58:38"}]}]}';
$jdc = json_decode($jsondata,true);
var_dump($jdc);
var_dump($jdc['passReport'][0]['passList'][0]['passType']);
var_dump($jdc['passReport'][0]['passList'][0]['time']);
?>

【讨论】:

    【解决方案2】:

    $data['passType']; 毫无意义。例如,它显然与序列号不在对象的同一级别。

    您需要深入到对象的层次结构中。它在一个数组中,然后是另一个数组。

    试试

    $data["passReport"][0]["passList"][0]['passType']
    

    $data["passReport"][0]["passList"][0]['time']
    

    改为。

    【讨论】:

      猜你喜欢
      • 2011-01-30
      • 1970-01-01
      • 2014-04-26
      • 2012-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-14
      • 2014-04-26
      相关资源
      最近更新 更多