Что не так:
Когда вы НЕ загружаете новый файл, вы все равно запускаете
$image_file = generatenewstring(12).$_FILES["image"]["name"];
// snip
if ($image_file) {
// Processing image & error handling
}
Я предполагаю, что generatenewstring(12)
генерирует строкус 12 случайными символами, поэтому $image_file
ВСЕГДА уступит истинному значению, поэтому всегда выполняйте оператор if.
Ваша проверка типов не удастся, поэтому $errorMsg
будет установлен на "Upload JPG, [snip]"
.Поэтому
if(!isset($errorMsg)) {
// Update-statement
}
не будет выполнен.
Решение:
Измените if ($image_file)
на if(is_uploaded_file($_FILES["image"]["tmp_name"]))
.В этом случае весь блок не будет выполнен, когда вы ничего не загрузите, поэтому $errorMsg
не будет установлен.
Вы, вероятно, также не хотите:
1) Переместите некоторый код (весь блок не нужен, когда вы не загружаете)
if(is_uploaded_file($_FILES["image"]["tmp_name"])) {
$image_file = ...
$type = ...
// [snip]
$directory = ...
if ($type == "image/jpg") {
}
} else {
$image_file = $row['image'];
}
2) Отобразите куда-нибудь свой $errorMsg
;)
3) Вы можете оставить это COALESCE
из комментариев, вы уже решили эту проблему, установив $image_file
в текущее значение в своем операторе else.