[英]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运算符(。)将导致相同的结果。
您的代码中存在两个问题。
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.