将数据从JSON文件加载到MYSQL数据库

时间:2016-01-18 05:26:50

标签: php mysql json

我正在尝试将找到here的JSON数据中的两个字段存储在mysql数据库中。首先,我为我想要的数据创建PHP数组:

$o = file_get_contents("vixData.json");
$o = json_decode($o);
$date = []; 
$close = []; 
$set = $o->dataset->data;
foreach($set as $pos)
{
array_push($date,$pos[0]);
array_push($close,$pos[4]);
}

工作正常。现在我正在尝试通过php数组调整插入多行的This问题。首先我破坏了我的数组:

$date = implode(",", $date);
$close = implode(",", $close);

然后尝试使用以下方法插入数据库:

  $sql = "INSERT INTO vix (date,close) VALUES (".$date.",".$close.")";

    if (mysqli_multi_query($dbc, $sql)) {
        echo "VIX Load Successful";
    } else {
        echo "VIX Load Error";
    }

我看到了我的加载错误。没有数据库连接问题,因为我的脚本中先前使用了$ dbc。试着调试;我的SQL INSERT语句有效吗?有谁能看到这个问题?

亲切的问候,

3 个答案:

答案 0 :(得分:2)

快速查看它,似乎您的值不会包含在SQL中的引号中。试试这个:

$sql = "INSERT INTO vix (date,close) VALUES ('".$date."','".$close."')";

删除concat运算符(。)将导致相同的结果。

答案 1 :(得分:1)

您的代码中存在两个问题。

  1. 如前所述,您需要在日期字符串中使用引号。
  2. 其次,你不能像那样使用mysqli_multi_query()
  3. 修改后的代码:

    您可以使用多个INSERT语句:

    $o = file_get_contents("vixData.json");
    $o = json_decode($o);
    $date = []; 
    $close = []; 
    $set = $o->dataset->data;
    foreach($set as $pos)
    {
        array_push($date,$pos[0]);
        array_push($close,$pos[4]);
    }
    
    $sql = "";
    foreach ($date as $key => $value) {
        $sql .= "INSERT INTO vix (date,close) VALUES ('".$value."','".$close[$key]."'); ";
    }
    
    if (mysqli_multi_query($dbc, $sql)) {
        echo "VIX Load Successful";
    } else {
        echo "VIX Load Error";
    }
    

答案 2 :(得分:0)

删除包含值的双引号和concatinator。

$sql = "INSERT INTO vix (date,close) VALUES ('$date','$close')";