foreach ($day as $dates=>$v) {
$stmt3->bindParam(':day_1', $day);
$stmt3->bindParam(':day_2', $day);
$stmt3->bindParam(':day_3', $day);
$stmt3->bindParam(':id', $id);
$id = $v['id'];
$stmt3->execute();
}
подумайте об этом фрагменте.
у вас три даты. Массив из трех дат. Вы перебираете каждую дату.
Для
каждой даты делаете
три действия (ещё и неправильных). Делаете
три апдейта, по одному на каждой итерации.
Либо делайте так:
$stmt3->bindParam(':day_1', $day[0]);
$stmt3->bindParam(':day_2', $day[1]);
$stmt3->bindParam(':day_3', $day[2]);
$stmt3->bindParam(':id', $id);
обходясь без цикла. Либо, если ожидается рост количества полей day4 day5 dayN - перебирайте в цикле и присваивайте плейсхолдерам итератор
$stmt3->bindParam(':day_'.$i, $day[$i]);
но тогда учтите что первая часть апдейта тоже должна генерироваться через перебор.
И всю эту махину завершайте
одним вызовом execute.