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

时间:2014-09-15 22:32:06

标签: php mysql

我有一个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());

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

$ query =“UPDATE用户SET        Title =合并($ title,Title)等...

3 个答案:

答案 0 :(得分: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."' ";

答案 1 :(得分:1)

不确定:你有数据并想要更新,但只有当数据库中的某些数据为空时? 在案例中只有一个地方:

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

例如

此致 彼得

答案 2 :(得分:1)

$query = 'UPDATE user SET

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