简体   繁体   English

如何使用PHP在数据库的json数组中插入多行

[英]how to insert multiple lines in json array in database using php

I want to enter some details that included in JSON arrays to database. 我想将包含在JSON数组中的一些详细信息输入数据库。
Given below is my source code. 下面给出的是我的源代码。

here is my data json array from the txt file 这是来自txt文件的数据json数组

{ {
"reader_name":"Biboy Pogi", "mac_address":"00:16:25:10:7E:85", "tag_reads":[ “ reader_name”:“ Biboy Pogi”,“ mac_address”:“ 00:16:25:10:7E:85”,“ tag_reads”:[
{ {
"antennaPort":1, "epc":"2015031687850100010105B5", "tid":"E280110520005A8B952F0886", "isHeartBeat":false } ] } “ antennaPort”:1,“ epc”:“ 2015031687850100010105B5”,“ tid”:“ E280110520005A8B952F0886”,“ isHeartBeat”:false}]}

{ {
"reader_name":"Biboy Pogi", "mac_address":"00:16:25:10:7E:85", "tag_reads":[ “ reader_name”:“ Biboy Pogi”,“ mac_address”:“ 00:16:25:10:7E:85”,“ tag_reads”:[
{ {
"antennaPort":1, "epc":"2015031687850100010105B5", "tid":"E280110520005A8B952F0886", "isHeartBeat":false } ] } “ antennaPort”:1,“ epc”:“ 2015031687850100010105B5”,“ tid”:“ E280110520005A8B952F0886”,“ isHeartBeat”:false}]}

your json seems to be the problem. 您的json似乎是问题。

try this: 尝试这个:

[
  {
    "reader_name": "Biboy Pogi",
    "mac_address": "00:16:25:10:7E:85",
    "tag_reads": [
      {
        "antennaPort": 1,
        "epc": "2015031687850100010105B5",
        "tid": "E280110520005A8B952F0886",
        "isHeartBeat": false
      }
    ]
  },
  {
    "reader_name": "Biboy Pogi",
    "mac_address": "00:16:25:10:7E:85",
    "tag_reads": [
      {
        "antennaPort": 1,
        "epc": "2015031687850100010105B5",
        "tid": "E280110520005A8B952F0886",
        "isHeartBeat": false
      }
    ]
  }
]

You'r JSON is wrong and two times the same. 您的JSON错误并且两次相同。 Maybe you'll need it that way, but this one of them 也许您会需要它,但是其中之一

{
  "reader_name": "Biboy Pogi",
  "mac_address": "00:16:25:10:7E:85",
  "tag_reads": [
      {
        "antennaPort": 1,
        "epc": "2015031687850100010105B5",
        "tid": "E280110520005A8B952F0886",
        "isHeartBeat": false
      }
  ]
}

And you can't reach $antennaPort = $data['antennaPort']; 而且您无法达到$antennaPort = $data['antennaPort']; that way. 那样。 You have to call it like this 你必须这样称呼它

$antennaPort = $data['tag_reads']['antennaPort'];
$epc= $data['tag_reads'][0]['epc'];
$tid= $data['tag_reads'][0]['tid'];

EDIT 编辑

Insert into you'r database like this 这样插入您的数据库

mysqli_query($con,$sql)

After that, you should check for errors 之后,您应该检查错误

if(!mysqli_query($con, $sql))
  die ('Error in query: ' . mysqli_error($con));

Or you go in one line 或者你排成一排

mysqli_query($con, $sql) or die(mysqli_error()); 

Assuming that you source data come in one json per row. 假设您的源数据每行包含一个json。 You can do the iteration insert with the below sample code: 您可以使用以下示例代码进行迭代插入:

$fn = 'debug.txt';
$raw = file_get_contents($fn);

$raw = explode("\r\n", $raw);
foreach($raw as $row){
    //force it to array for single item
    if (substr($row, 0, 1) != '[')
        $row = '[' . $row . ']';

    $data_arr= json_decode($row, true);

    foreach ($data_arr as $data){
        $reader_name = $data['reader_name'];
        $mac_address = $data['mac_address'];
        $antennaPort = $data['tag_reads'][0]['antennaPort'];
        $epc = $data['tag_reads'][0]['epc'];
        $tid = $data['tag_reads'][0]['tid'];

        $sql = "INSERT INTO tags(reader_name, mac_address, antennaPort, epc, tid)
        VALUES('$reader_name', '$mac_address', '$antennaPort', '$epc', '$tid')";

        if(!mysqli_query($con, $sql))
        {
            die('Error : ' . mysqli_error($con));
        }
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM