繁体   English   中英

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

[英]Load data from JSON file to MYSQL database

我试图在mysql数据库中存储这里找到的JSON数据中的两个字段。 首先,我为我想要的数据创建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数组调整插入多行的这个问题。 首先,我内爆了我的数组:

$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语句有效吗? 有谁能看到这个问题?

亲切的问候,

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

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

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

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

  1. 如前所述,您需要为Date字符串使用引号。
  2. 其次你不能像那样使用mysqli_multi_query()

修改代码:

您可以使用多个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";
}

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM