Если так то вылетит ошибка что объект не был создан
$stmtr = $db->prepare("UPDATE contacts SET
img=:img,
WHERE ID = :id");
$stmtr->bindParam(':id', $_GET['id']);
$stmtr->bindParam(':img', $_FILES['uploadfile']['name']);
$stmtr->execute();
Понимаем...видимо ИД не указан там где нужно, поднимаем его выше
$stmtr->bindParam(':id', $_GET['id']);
$stmtr = $db->prepare("UPDATE contacts SET
img=:img,
WHERE ID = :id");
$stmtr->bindParam(':img', $_FILES['uploadfile']['name']);
$stmtr->execute();
Указали выше но все равно будет ошибка и только если сделать такой костыль
$stmtr->bindParam(':id', $_GET['warning']);
$stmtr = $db->prepare("UPDATE contacts SET
img=:img,
WHERE ID = :id");
$stmtr->bindParam(':id', $_GET['id']);
$stmtr->bindParam(':img', $_FILES['uploadfile']['name']);
$stmtr->execute();
То все, ок...почему так и как более лаконично отстроить запрос?