【问题标题】:Loop through json array and insert into mysql php循环遍历json数组并插入mysql php
【发布时间】:2015-12-23 19:56:39
【问题描述】:

我正在尝试使用 php 向 mysql 中插入一条记录,但我不知道如何在 php 中实现这一点: 基本上我有以下 json 数组:

[{StudentId:236,"Monday":null,"Tuesday":"2","Wednesday":"3","Thursday":"4","Friday":null},{StudentId:237,"Monday":null,"Tuesday":null,"Wednesday":"3","Thursday":"4","Friday":"5"}]

MySQL 表架构如下:

标识 |学生 |天

1 | 236 | 2

2 | 236 | 3

3 | 236 | 4

4 | 237 | 3

5 | 237 | 4

我正在使用以下代码循环并获取值,但它不是每天都显示。我是否应该创建另一个学生参加的所有天数的数组,然后循环遍历?请和建议将不胜感激。谢谢。

$arr = json_decode($output,true);
foreach ($arr as $key => $jsons)
    {
        $day=null;
        $student=null;

        foreach($jsons as $key => $value)
        {
            if($key == 'StudentId')
            {
                $student = $value;
            }

            if($key == 'Monday')
            {
              if($value == '1')
              {
                 $day = 1;
              }
            }

            if($key == 'Tuesday')
            {
               if($value == '2')
               {
                   $day = 2;
               }
             }
        }
        echo "INSERT INTO MyTable (Student,Day) VALUES($student,$day);";
        echo '<br/>';
    }

【问题讨论】:

    标签: php mysql json mysqli


    【解决方案1】:

    您有一个键/值对数组,但根据您的代码,您有两个键/值对数组。看看以下内容如何影响您的代码,并输入一两个 print 语句来帮助调试。

    更改:foreach ($arr as $key =&gt; $jsons)

    收件人:foreach ($arr as $jsons)

    【讨论】:

    • 实际上它是一个数组内的对象,索引为0、1、2等
    【解决方案2】:

    看起来您的 JSON 字符串格式不正确。此示例工作正常:

    $json = <<<JSON
    [
      {
        "StudentId": 236,
        "Monday": null,
        "Tuesday": "2",
        "Wednesday": "3",
        "Thursday": "4",
        "Friday": null
      },
      {
        "StudentId": 237,
        "Monday": null,
        "Tuesday": null,
        "Wednesday": "3",
        "Thursday": "4",
        "Friday": "5"
      }
    ]
    JSON;
    
    $arr = json_decode($json, true);
    foreach ($arr as $student) {
        foreach ($student as $key => $value) {
            if ($key == 'StudentId') {
                $student = $value;
            }
    
            if ($key == 'Monday') {
                if ($value == '1') {
                    $day = 1;
                }
            }
    
            if ($key == 'Tuesday') {
                if ($value == '2') {
                    $day = 2;
                }
            }
        }
        echo "INSERT INTO MyTable (Student,Day) VALUES($student,$day);\n";
        echo '<br/>';
    }
    

    结果是:

    INSERT INTO MyTable (Student,Day) VALUES(236,2);
    INSERT INTO MyTable (Student,Day) VALUES(237,2);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-11
      • 2013-02-06
      • 1970-01-01
      • 1970-01-01
      • 2013-04-19
      • 2017-01-30
      • 1970-01-01
      相关资源
      最近更新 更多