MySQL更新列只有在值不为空的地方

ife*_*lse 4 php mysql

我有一个UPDATE查询并使用Ajax,我想知道任何值是否为空我只能更新数据库中非空的值.我不知道是否可以使用if语句或其他东西来检查以跳过空值.我知道我可以添加另一个表单元素,但只是想知道是否有其他解决方案.

仅当数据是来自前端表单的POST时.如果数据不是POST不更新this 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());
Run Code Online (Sandbox Code Playgroud)

更新:这对我有用.谢谢卡里姆达拉夫

$ query ="UPDATE user SET Title= Coalesce($ title,Title)etc ...

Kar*_*raf 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."' ";
Run Code Online (Sandbox Code Playgroud)

要么 :

  $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."' ";
Run Code Online (Sandbox Code Playgroud)