В цикле получаю и сохраняю данные в базу mysql так:
$data = json_decode($json, true);
foreach($data['data'] as $date=>$values) {
$date = date("Y-m-d", strtotime($date));
$usd = $values['USD'][0] ?? null;
$usd_two = $values['USD'][1] ?? null;
$usd_three = $values['USD'][2] ?? null;
// сохраняю в базу
$sql = "REPLACE INTO price (name, coin_price, coin_price_2, coin_price_3, p_date)
VALUES ('test', '$usd', '$usd_two', '$usd_three', '$date')";
if ($mysqli->query($sql) === TRUE) {
echo "Успешно создана новая запись";
} else {
echo "Ошибка: " . $sql . "<br>" . $mysqli->error;
}
}
По какой-то причине в данных попадаются дубли значений по датам (как минимум один дубль нашел), в результате при получении данных уже из базы mysql, данные не корректы. Они смещаются на день вперед.
Вот пример дубля в json:
"2014-07-09T00:04:00.000Z":{"USD":[625.22143555,10006096,8125377776.3671875]},
"2014-07-09T23:59:00.000Z":{"USD":[624.50933838,9819150,8118683849.859619]},
Как я понял, разница во времени.
Скрипт выше берет оба значения и сохраняет под разными датами, что для меня странно, ведь дата задана переменной
$date и в базе на дате стоит UNIQUE KEY (пробовал убирать, не помогло).
В базе сохраняет так:
"2014-07-09T00:04:00.000Z":{"USD":[625.22143555,10006096,8125377776.3671875]},
"2014-07-10T23:59:00.000Z":{"USD":[624.50933838,9819150,8118683849.859619]},
и дальше все данные получаются не корректными, сдвинутыми на день.
Может быть проще на этапе получения данных из json, в
$data удалить дублирующиеся даты? Как?
Или что-то не так с
foreach($data['data'] as $date=>$values)
Помогите разобраться и решить мою проблему, пожалуйста.