MySQL обновляет столбец, только если значение не пустое где

4

У меня есть запрос UPDATE и использование Ajax, я хотел знать, пусто ли какое-либо значение, я могу только обновить значения, которые не пусты в базе данных. Я не знаю, возможно ли иметь оператор if или что-то, чтобы проверить, чтобы пропустить пустые значения. Я знаю, что могу просто добавить еще один элемент формы, но просто хотел узнать, есть ли другое решение.

Только если данные являются POST из формы переднего конца. Если данные не POST не обновляют этот Title= '. $Title.',

$id = $_POST['id'];
$title = "";
$description = $_POST['Description'];
$date = $_POST['Date'];

 $query = 'UPDATE user SET

  `id` = '.$id.', 
  `Title` = '.$title .', 
  `Description` = '.$description.', 
  `Date` = '.$date =.' 
  WHERE `id` = '.$id;

 $result = mysql_query($query) or die("<b>A fatal MySQL error occured</b>.<br />Query:  ".$query."<br />Error: (".mysql_errno().") ".mysql_error());

Обновление: Это то, что сработало для меня. Спасибо Karim Daraf

$query = "UPDATE user SET       Title= Coalesce ($ title, Title) и т.д.

  • 0
    Пожалуйста, убедитесь, что вы подтвердите свои данные. Не делайте это на стороне JS, делайте это на стороне сервера.
  • 0
    Приведенный выше код представляет собой чрезвычайно серьезную угрозу безопасности. 1) Не используйте функции mysql_, они устарели. Вместо этого используйте mysql i или pdo, подготовленные операторы. Если вы не используете подготовленные операторы, обязательно используйте escape-строку.
Показать ещё 1 комментарий
Теги:

3 ответа

5
Лучший ответ

Попробуйте это с Coalesce.

   $query = " UPDATE user 
   SET 
 `Title`       = CASE WHEN `Title`='' or `Title` IS NULL THEN '$title' END, 
 `Description` = CASE WHEN `Description`='' Or `Description` IS NULL THEN '$description' END, 
  `Date`       = CASE WHEN `Date`='' Or Date` IS NULL THEN '$date' END
    WHERE `id` = '".$id."' ";

или:

  $query = " UPDATE user 
  SET 
 `id`         = Coalesce('$id''".$id."' , NULLIF(`id`,'')), 
`Title`       = Coalesce('$title''".$title."',NULLIF(`Title`,'') ) , 
`Description` = Coalesce('$description''".$description."' , NULLIF(`Description`,'') ) , 
 `Date`       = Coalesce('$date''".$date."',NULLIF(`Date`,'')) 
 WHERE `id` = '$id''".$id."' ";
  • 0
    Я видел Coalesce раньше, но не понимал, как использовать эту функцию с моим запросом. Я пробую это сейчас, но получаю синтаксические ошибки, поэтому, вероятно, нужно исправить мои цитаты.
  • 0
    Это рабочий синтаксис без ошибок! Теперь переписать мой запрос, чтобы посмотреть, смогу ли я заставить Coalesce работать. Будет держать вас в курсе. Получение этой ошибки на странице «У вас есть ошибка в вашем синтаксисе SQL; обратитесь к руководству, соответствующему вашей версии сервера MySQL, для правильного синтаксиса для использования рядом» Спасибо.
Показать ещё 8 комментариев
1
$query = 'UPDATE user SET

  'id' = '.$id.', 
  'Title' = COALESCE(NULLIF("'.$title.'", ""),'Title'), 
  'Description' = "'.$description.'", 
  'Date' = "'.$date.'" 

  WHERE 'id' = "'.$id.'"';
1

Не уверен, что понял: у вас есть данные и вы хотите их обновить, но только если некоторые из них в БД пусты? В случае perfom только a где:

 $query = 'UPDATE user SET
  `id` = '.$id.', 
  `Title` = '.$title .', 
  `Description` = '.$description.', 
 `Date` = '.$date =.' 
  WHERE `id` = '.$id.' AND Title = '';

например

Отношения Питер

  • 0
    Только если данные POST из формы интерфейса. Если данные не POST, не обновляйте этот Title = '. $ Title .',

Ещё вопросы

Сообщество Overcoder
Наверх
Меню