@kyurem_bog

Как обновить данные в бд, если одно или несколько полей пусты?

Есть форма которые передает данные в бд, но при обновлении некоторые поля могут остаться пустыми(те данные в этих полях не требуют обновления). Например у меня есть поле где у меня обновляется файл, но это нужно не всегда.
$uploadname=basename($_FILES['file']['name']);//записываем имя файла
$uploadpath='file/'.$uploadname; 

    if (isset($_POST["fiostud"]) && move_uploaded_file($_FILES['file']['tmp_name'], $uploadpath)) {
   
      
          $sql = mysqli_query($mysqli, "UPDATE `stud` SET
           `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'");
      }
  • Вопрос задан
  • 177 просмотров
Пригласить эксперта
Ответы на вопрос 3
@rPman
Убирайте пиздец с вставкой значений в sql-код, пользуйтесь параметрами запросов. Иначе к вам приедут sql injection.

По поводу значений формы, вам достаточно использовать условия в вырожениях, что то типа
@$_POST['vidrab']==''?null:$_POST['vidrab']
@ говорит что ошибку отсутствия нужно игнорировать, и значение в этом случае будет false, нестрогое равенство == скушает вместе с false еще и пустую строку. Если у вас комбобокс, то используйте конкретное значение 'не выбрано' и сравнивайте дополнительно с ним. Осторожнее с чекбоксиками, там отключенное значение - пустое.
Ответ написан
sandu2d
@sandu2d
Человек
В целом это очень просто решается если использовать какой-нибудь 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);
}
Ответ написан
Комментировать
@lecrosshel
PHP разучился проверять на null? Или из него удалили циклы, вместе с поддержкой массивов?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы