Php将json文件数据加载到数据库中

问题描述 投票:-1回答:1
{"s":"ok",
 "t":[1549584000,1549843200,1549929600,1550016000,1550102400,1550188800,1550448000,1550534400,1550620800,1550707200,1550793600],
 "c":["4.890","4.880","4.900","4.900","4.910","4.930","4.990","5.140","5.170","5.100","4.830"],
 "o":["4.850","4.890","4.900","4.900","4.900","4.910","4.930","5.000","5.150","5.170","5.100"],
 "h":["4.910","4.900","4.940","4.940","4.950","4.940","5.000","5.180","5.210","5.170","5.110"],
 "l":["4.830","4.840","4.870","4.860","4.860","4.900","4.920","4.980","5.110","5.070","4.780"],
 "v":[4551400,6424900,1877900,2492000,2931300,4548000,5863800,8213200,5692400,10684700,29059000],
 "date_from":"2019-02-08", "date_to":"2019-02-25"}

上面是我的json数据,我可以知道如何将数据循环到1549584000,4.850,4.910,4.830,4551400并将其循环到数据库吗?

<?php 
    $data = file_get_contents('history.json'); //save it as history.json
    $json = json_decode($data,true);

    //echo $characters->s;
    //echo '<pre>'; print_r($characters);
    $i = 0;

    foreach($characters['t'] as $wi){
        $i++;
        mysql_query("INSERT INTO raw_data SET id= '".$i."',t = '".$wi."'")or die(mysql_error());
    }
    $j = 0;
    foreach($characters['c'] as $ji){
        $j++;
        mysql_query("UPDATE raw_data SET c = '".$ji."' WHERE id = '".$j."'")or die(mysql_error());
    }
    $z = 0;
    foreach($characters['o'] as $oi){
        $z++;
        mysql_query("UPDATE raw_data SET o = '".$oi."' WHERE id = '".$z."'")or die(mysql_error());
    }
    $a = 0;
    foreach($characters['o'] as $ai){
        $a++;
        mysql_query("UPDATE raw_data SET h = '".$ai."' WHERE id = '".$a."'")or die(mysql_error());
    }
    $b = 0;
    foreach($characters['h'] as $bi){
        $b++;
        mysql_query("UPDATE raw_data SET h = '".$bi."' WHERE id = '".$b."'")or die(mysql_error());
    }
    $c = 0;
    foreach($characters['l'] as $li){
        $c++;
        mysql_query("UPDATE raw_data SET l = '".$li."' WHERE id = '".$c."'")or die(mysql_error());
    }
    $d = 0;
    foreach($characters['v'] as $vi){
        $d++;
        mysql_query("UPDATE raw_data SET v = '".$vi."' WHERE id = '".$d."'")or die(mysql_error());
    }
?>

我尝试像这样编写它,但它可以正常工作,但是效果不佳,加载速度非常慢。请给我一些建议。问候

php mysql arrays json
1个回答
0
投票

由于您的第一个查询有些不同,因此无法进入循环,我们必须将其分开处理,对于所有其他查询,这是一种有效的方法。

您可以尝试使用

$i = 0;
foreach($characters['t'] as $wi){
 $i++;
 mysql_query("INSERT INTO raw_data SET id= '".$i."',t = '".$wi."'")or die(mysql_error());
}

$data = ['t','c','o','h','l','v'];
for ($k=0; $k < sizeof($data) ; $k++) { 
for($i = 2;$i < 7; $i++){
    foreach ($characters[$data[$k]] as $value) {
        for ($j=0; $j < sizeof($characters[$data[$k]]) ; $j++) { 
           mysql_query("UPDATE raw_data SET '".$data[$k]."' = '".$value."' WHERE id = '".$j."'");
        }

    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.