Как обновить данные в бд, если одно или несколько полей пусты?
Убирайте пиздец с вставкой значений в sql-код, пользуйтесь параметрами запросов. Иначе к вам приедут sql injection.
По поводу значений формы, вам достаточно использовать условия в вырожениях, что то типа@$_POST['vidrab']==''?null:$_POST['vidrab']
@ говорит что ошибку отсутствия нужно игнорировать, и значение в этом случае будет false, нестрогое равенство == скушает вместе с false еще и пустую строку. Если у вас комбобокс, то используйте конкретное значение 'не выбрано' и сравнивайте дополнительно с ним. Осторожнее с чекбоксиками, там отключенное значение - пустое.
В целом это очень просто решается если использовать какой-нибудь MVC ориентированый framework.
А так, можешь сделать что-то такое:$attributes = [
    'fio_stud' = $_POST['fiostud'],
    'gruppa' = $_POST['gruppa'],
    'vid_rab' = $_POST['vidrab'],
    'spec' = $_POST['spec'],
    'ocen' = $_POST['ocen'],
    'fio_prepod' = $_POST['fioprepod'],
    'path' = $uploadpath,
    'date' = $_POST['date'],
    'name' = $uploadname,
];
$query = 'Update stud Set';

function (string $query, array $attributes)
{
    foreach ($attributes as $column => $value) {
        $query .= !is_null($attribute) ? " {$column} = {$value}," : '';
    }

    return substr($query, 0, -1);
}