我正在尝试将找到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语句有效吗?有谁能看到这个问题?
亲切的问候,
答案 0 :(得分:2)
快速查看它,似乎您的值不会包含在SQL中的引号中。试试这个:
$sql = "INSERT INTO vix (date,close) VALUES ('".$date."','".$close."')";
删除concat运算符(。)将导致相同的结果。
答案 1 :(得分:1)
您的代码中存在两个问题。
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";
}
答案 2 :(得分:0)
删除包含值的双引号和concatinator。
$sql = "INSERT INTO vix (date,close) VALUES ('$date','$close')";