Есть таблица со столбцами id, count1, count2,count3
Получаю массив вида {[21-1]=>{[count]=>3},[2-2]=>{[count]=>20},[5-3]=>{[count}=>15}.....}
где 21-1 это id и 1 это номер столбца для изменения значения
Написал код для внесения изменений в таблицу
Всё работает но выглядит как то топорно. как можно улучшить код и как правильно задать запрос если в качестве названия столбца использовать переменную?
$sql = "SELECT `count1`, `count2`, `count3`
FROM `list`
WHERE `id` = ?";
foreach($data as $id =>$value ) {
$count=$value['count'];
$id=explode("-", $id);
$stmt = $conn -> prepare ($sql);
$stmt -> execute([$id[0]]);
$result = $stmt -> fetch(PDO::FETCH_ASSOC);
if ($id[1]== '1') {$result=(int)$result['count1']-$count; $column = 'count1';};
if ($id[1]== '2') {$result=(int)$result['count2']-$count; $column = 'count2';};
if ($id[1]== '3') {$result=(int)$result['count3']-$count; $column = 'count3';};
$sql_upd = "UPDATE `list`
SET $column = ?
WHERE `id` = ?";
$stmt = $conn -> prepare ($sql_upd);
$stmt -> execute ([$result,$id[0]]);
}