如果Post值不为null,则更新数据库

时间:2013-02-11 03:41:31

标签: php mysql sql

我正在尝试仅在$ _POST []不为空时更新表用户。如果为null,则列中已有的值应保留。

$query = "UPDATE `Users` 
SET FirstName = COALESCE(:firstName, FirstName), LastName = ISNULL(:lastName, LastName), City = :city, State = :state WHERE Email = :email";
$stmt = $dbh->prepare($query);
$stmt->bindValue(':firstName', $firstName);
$stmt->bindValue(':lastName', $lastName);
$stmt->bindValue(':city', $city);
$stmt->bindValue(':state', $state);
$stmt->bindValue(':email', $email);
$stmt->execute();

我尝试使用COALESCE作为FirstName列,使用ISNULL作为LastName。 COALESCE用空格(NULL)替换我的值,这与我想要的完全相反,ISNULL似乎不起作用。

1 个答案:

答案 0 :(得分:5)

假设您的意思是COALESCE正在用空格('')替换FirstName,请尝试使用NULLIF

UPDATE `Users` 
SET FirstName = COALESCE(NULLIF(:firstName,''), FirstName) ...

我假设POST发布了空白。

祝你好运。