3

$_POST[ value ] が null でない場合にのみ、テーブル Users を更新しようとしています。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();

列 FirstName には COALESCE を、LastName には ISNULL を試しました。COALESCE は、自分の値を空白 (NULL) に置き換えます。これは、達成したいこととは正反対であり、ISNULL は機能していないようです。

4

1 に答える 1

5

COALESCEFirstName を空白 ('') に置き換えていると仮定して、次を使用してみてNULLIFください。

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

POST が空白を投稿していると仮定しています。

幸運を。

于 2013-02-11T03:44:02.377 に答える