php - PHP + MYSQL 的 JSON 错误

标签 php mysql arrays json

我的客户向我发送了这个 JSON,以便我可以循环并将数据保存在 Mysql 中。我只是无法得到它,因为它与我的工作不同;

有人可以给我一些提示吗?一种格式与另一种格式有什么区别。

出现的错误是:警告:第 28 行为 foreach () 提供的参数无效

foreach($json_data['service_devices'] as $key => $value){

我曾经使用过的 Formator EX:

{
     "ordem_de_servico": [
         {
             "oser_numero_os": 23940493,
             "oser_address_name": NAME;

客户 JSON

ordem_de_servico:
        {  
           "oser_numero_os":23940493,
           "oser_dt_abertura":"28/03/2018",
           "servico":{  
              "serv_cod_servico":60,
              "serv_descr_servico":"CORTE POR DEBITO"
           },
           "cliente":{  
              "clie_ident_cliente":638617,
              "nome":"MARIA APARECIDA FERREIRA DO NASCIMENTO"
           },
           "unidade_consumidora":{  
              "unid_ident_uc":2436434,
              "logr_nome_logr_expandido":"R JOSE GUIMARAES"
           },
           "faturas":[  
              {  
                 "total_fatura":"88.44",
                 "ftcd_mes_ano_fatmto":"2017-04-01"
              },
              {  
                 "total_fatura":"45.16",
                 "ftcd_mes_ano_fatmto":"2017-03-01"
              }
           ]
    }

我的最后一次尝试

<?php
    $servername = "localhost";
    $username = "root";
    $password = "";
    $dbname = "webservice";
    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);
    // Check connection
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    } 


    // Read JSON file
    $json = file_get_contents('oss.json');

    //Decode JSON
    $json_data = json_decode($json,true);


    foreach($json_data['ordens_de_servico'] as $key => $value){
        $os = $value["oser_numero_os"];
        $data_abertura = $value["oser_dt_abertura"];

        foreach($json_data['ordens_de_servico'][$key]['faturas'] as $index => $row){

            $valorParcelas = $row["total_fatura"];
            $sql = "SELECT numero_os FROM os WHERE numero_os = '$os'";
            $result = $conn->query($sql);
            if ($result->num_rows > 0) {
                    echo "PULAR FATURA"."<p>";
            }else {     
            $sql = "INSERT INTO faturas (valorParcelas, numero_os) VALUES ('$valorParcelas', '$os')";
                if ($conn->query($sql) === TRUE) {
                    echo "<strong>".$valorParcelas." - FATURA OK"."</strong>"."<p>";
                } else {
                    echo "Error Fatura";
                }
            }
        }
        $sql = "SELECT numero_os FROM os WHERE numero_os = '$os'";
            $result = $conn->query($sql);
            if ($result->num_rows > 0) {
                    echo "PULAR"."<p>";
            }
            else{
                $sql = "INSERT INTO os (numero_os, data_abertura) VALUES ('$os', '$data_abertura')";
                if ($conn->query($sql) === TRUE) {
                    echo "<strong>".$os." - GRAVADO"."</strong>"."<p>";
                } else {
                    echo "Error";
                }
            }

    }

    $conn->close();
    ?>

最佳答案

更改行:

foreach($json_data['ordens_de_servico'] as $key => $value){

致:

foreach($json_data as $key => $value){

由于新数据没有外部元素ordens_de_servico

或者您可以编辑 JSON 文件并添加该元素(不要忘记在末尾添加右大括号。

编辑文件的前两行:

ordem_de_servico:
        {

致:

{ “ordem_de_servico”:[

并更改文件结尾:

        }

致:

    ]
}

关于php - PHP + MYSQL 的 JSON 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50725610/

相关文章:

php - 通过 php 隐藏具有 0 值结果的文本/链接

javascript - PHP 的日期验证有问题

php - 如果日期早于日期则显示错误

javascript - 如何使按钮在单击时禁用/启用?

php - AngularJS 表单数据未存储在 MySQL 数据库中

Java:ArrayStore异常

python - 使用线性方程创建径向插值圆

c - C 中的字符串常量与 char 数组

php - Php Live MySQL 数据库搜索的清除结果 Div(非输入字段)

PHP session 未设置或 PHP session 销毁