Как игнорировать пустые поля при вставке в базу данных MySQL?

#php #mysql

#php #mysql

Вопрос:

Я создаю очень простую страницу администратора для управления контентом на другой странице.

У меня есть несколько полей на странице администратора, одно из которых — поле для загрузки файла. При отправке формы файл загружается в папку, а имя файла помещается в базу данных.

Проблема в том, что когда кто-то переходит на страницу администратора, чтобы обновить содержимое, и не загружает файл, значение имени файла стирается из базы данных.

Есть ли способ выполнить запрос MySQL или что-то еще, что игнорирует пустые значения?

 $headerimage=($_FILES['headerimage']['name']); 
$cktest = $_POST['editor1'];
$LikeText = $_POST['editor2'];

$sql = "UPDATE installs SET noLikeText = '$cktest', LikeText = '$LikeText', headerImage = '$headerimage' WHERE pageID = '$page_id'";
  

Комментарии:

1. Вы должны делать это в своем коде, А НЕ в своем запросе. Вы фильтруете пользовательский ввод, да?

2. Как выглядит ваш код сохранения? Вы должны проверять пользовательский ввод и сохранять только в том случае, если ввод действителен.

Ответ №1:

вы можете использовать это…

Например

 if($headerimage != "")
{
$sql = "UPDATE installs SET noLikeText = '$cktest', LikeText = '$LikeText', headerImage = '$headerimage' WHERE pageID = '$page_id'";
}else{

$sql = "UPDATE installs SET noLikeText = '$cktest', LikeText = '$LikeText' WHERE pageID = '$page_id'";
}
  

Ответ №2:

Похоже, вам нужно добавить некоторую логику в ваше приложение. В большинстве случаев то, о чем вы просите, может быть выполнено путем добавления флажка «удалить» в форму, поэтому, если пользователь нажмет флажок «Удалить», он удалит строку, если они этого не сделают, тогда ничего, относящегося к файлу, не произойдет.

Ответ №3:

Вы должны начать с показа запросов. Я бы предположил, что вы неправильно пишете запрос на обновление.

 $file = "";
if(isset($_FILES['file']['tmp_name']))
{
    //handle images here
    $file = "`file` = 'some_filename.txt', ";
}
$sql = "UPDATE `table` SET $file `field` = '".mysql_real_escape_string($some_value)."' WHERE `id` = '".mysql_real_escape_string($some_id)."'";
  

Основная идея заключается в том, что вы строите свой запрос как строку на основе условий. Это всегда работает для меня.