PHP / MySQL запрос условного обновления - PullRequest
2 голосов
/ 10 марта 2011

Я пытаюсь отправить данные в базу данных.У меня есть форма обновления, в которой есть несколько полей, которые извлекают данные из базы данных в поля.Отправка обновляет данные в базе данных.Два поля, которые меня касаются наших двух загрузчиков изображений, которые у меня есть в форме.Я делал это успешно, когда у меня есть только один загрузчик изображений на странице, но я не могу обернуть голову вокруг условного синтаксиса, когда я добавляю второй.Ниже приведен код, который я использую для форм, которые имеют только один загрузчик изображений.Это смотрит, чтобы видеть, является ли тот представленный элемент пустым.Если это так, он выполняет оператор обновления и пропускает переменную изображения.Если переменная изображения не пуста, выполняется оператор обновления с добавленным к нему полем.

if($imgProfileFull == ""){
$query = "update students set `nameFirst` = '$nameFirst', `nameLast` = '$nameLast', `profile` = '$profile', `priority` = '$priority', `active` = '$active', `_modifiedDate` = '$_modifiedDate' where `id` = '$id'";
}else{
if((($_FILES["image"]["type"] == "image/jpeg")
|| ($_FILES["image"]["type"] == "image/pjpeg"))
&& ($_FILES["image"]["size"] < 500000))
{
  if($_FILES["image"]["error"] > 0){
    header("location:students.php?file=error");
  }else{
    move_uploaded_file($_FILES["image"]["tmp_name"],
    "../images/students/full/" . $imgProfileFull);
  }
}else{
  header("location:students.php?file=error");
}
$query = "update students set `imgProfileFull` = '$imgProfileFull', `nameFirst` = '$nameFirst', `nameLast` = '$nameLast', `profile` = '$profile', `priority` = '$priority', `active` = '$active', `_modifiedDate` = '$_modifiedDate' where `id` = '$id'";
}

Как мне написать оператор обновления, чтобы включить другое поле изображения.Переменная будет $imgProfileThumb.В основном я хочу обновить два столбца изображения в базе данных, если и только если они НЕ пустые.Это связано с тем, что при построении формы поле изображения технически всегда пусто, если изображение фактически не загружено.Какие-нибудь мысли?Спасибо !!

1 Ответ

4 голосов
/ 10 марта 2011

Вы можете использовать оператор if для динамического создания запроса.

$query = "UPDATE students SET ";

if ($imgProfileFull !== ""){
    $query .= "`imgProfileFull` = '$imgProfileFull', ";
}

if ($imgProfileThumb !== ""){
    $query .= "`imgProfileThumb` = '$imgProfileThumb', ";
}

$query .= "`nameFirst` = '$nameFirst',
           `nameLast` = '$nameLast',
           `profile` = '$profile',
           `priority` = '$priority',
           `active` = '$active',
           `_modifiedDate` = '$_modifiedDate'
           WHERE `id` = '$id'";

Вы также можете использовать mysql_real_escape_string для строковых данных, если вы этого еще не сделали..

...