简体   繁体   中英

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.
Given below is my source code.

here is my data json array from the txt file

{
"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 } ] }

your json seems to be the problem.

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. 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']; 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. 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));
        }
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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