#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)."'";
Основная идея заключается в том, что вы строите свой запрос как строку на основе условий. Это всегда работает для меня.