Введите JSON дюйм mySQL - PullRequest
0 голосов
/ 07 мая 2020

Я пытаюсь ввести файл JSON в базу данных mySQL с помощью Php, но у меня не получается это сделать. Это мой json файл

{
    "recordcount": "2",
    "hoststatus": [
        {
            "@attributes": {
                "id": "18683"
            },
            "instance_id": "1",
            "host_id": "101",
            "name": "www.chaoticmoon.com",
            "display_name": "www.chaoticmoon.com",
            "address": "www.chaoticmoon.com",
            "alias": {},
            "status_update_time": "2020-05-06 04:40:04",
            "status_text": "check_http: Invalid hostname/address - www.chaoticmoon.com",
            "status_text_long": {},
            "current_state": "1",
            "icon_image": "www_server.png",
            "icon_image_alt": {},
            "performance_data": {},
            "should_be_scheduled": "1",
            "check_type": "0",
            "last_state_change": "2019-06-06 12:24:40",
        },
        {
            "@attributes": {
                "id": "18682"
            },
            "instance_id": "1",
            "host_id": "188",
            "name": "www.acme.com",
            "display_name": "www.acme.com",
            "address": "216.27.178.28",
            "alias": {},
            "status_update_time": "2020-05-06 04:37:07",
            "status_text": "CRITICAL - 216.27.178.28: rta nan, lost 100%",
            "status_text_long": {},
            "current_state": "1",
            "icon_image": "server.png",
            "icon_image_alt": {},
            "performance_data": "rta=0.000ms;3000.000;5000.000;0; pl=100%;80;100;; rtmax=0.000ms;;;; rtmin=0.000ms;;;;",
            "should_be_scheduled": "1",
            "check_type": "0",
            "last_state_change": "2018-07-02 11:38:36",

        }
    ]
}

Мой код следующий, но у меня возникают сбои, как их исправить?

<?php
require 'conexion.php';

$HostStatus = file_get_contents('../hostNAGIOS.json');
$contenido = json_decode($HostStatus,true);

$delete = "DELETE FROM nagioshost";
$ope = mysqli_query($conectar,$delete);

foreach($contenido as $row){
    $hostID = $row['hoststatus']['host_id'];
    $hostName = $row['hoststatus']['name'];
    $state = $row['hoststatus']['current_state'];
    $time = $row['hoststatus']['last_state_change'];

    $insertar = "INSERT INTO nagioshost(id,host_name,status,last_state_change) VALUES('$hostID', '$hostName', '$state', '$time')";
    $query = mysqli_query($conectar,$insertar);   

    if ($query) {
      echo "DATOS METIDOS";
    } else {
      echo "ERROR";
    }
}


mysqli_close($conectar);
?>

Это результат:

Warning: Illegal string offset 'hoststatus' in C:\xampp\htdocs\proyectoTFG\BBDD\jsonConNAGIOS.php on line 18

Warning: Illegal string offset 'host_id' in C:\xampp\htdocs\proyectoTFG\BBDD\jsonConNAGIOS.php on line 18

Warning: Illegal string offset 'hoststatus' in C:\xampp\htdocs\proyectoTFG\BBDD\jsonConNAGIOS.php on line 19

Warning: Illegal string offset 'name' in C:\xampp\htdocs\proyectoTFG\BBDD\jsonConNAGIOS.php on line 19

Warning: Illegal string offset 'hoststatus' in C:\xampp\htdocs\proyectoTFG\BBDD\jsonConNAGIOS.php on line 20

Warning: Illegal string offset 'current_state' in C:\xampp\htdocs\proyectoTFG\BBDD\jsonConNAGIOS.php on line 20

Warning: Illegal string offset 'hoststatus' in C:\xampp\htdocs\proyectoTFG\BBDD\jsonConNAGIOS.php on line 21

Warning: Illegal string offset 'last_state_change' in C:\xampp\htdocs\proyectoTFG\BBDD\jsonConNAGIOS.php on line 21
DATOS METIDOS
Notice: Undefined index: hoststatus in C:\xampp\htdocs\proyectoTFG\BBDD\jsonConNAGIOS.php on line 18

Notice: Undefined index: hoststatus in C:\xampp\htdocs\proyectoTFG\BBDD\jsonConNAGIOS.php on line 19

Notice: Undefined index: hoststatus in C:\xampp\htdocs\proyectoTFG\BBDD\jsonConNAGIOS.php on line 20

Notice: Undefined index: hoststatus in C:\xampp\htdocs\proyectoTFG\BBDD\jsonConNAGIOS.php on line 21
DATOS METIDOS
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...