1

我正在尝试找到一种将值插入到两列之一中的方法,具体取决于哪一列是 NULL。

$accept_sth = $dbh->prepare("UPDATE user_properties 
    IF(followup_offer <> NULL, fstatus=?)
    ELSE (istatus=?) 
    WHERE id=?");

$accept_sth->execute($_POST['option'], $_POST['id']);

我做错了。

4

1 回答 1

3

没有……脑损伤……必要的。您可以通过查询来完成

UPDATE user_properties 
   SET fstatus = IF(followup_offer IS NULL, fstatus, ?),
       istatus = IF(followup_offer IS NULL, ?, istatus)
 WHERE id = ?

注意:对于这种带有条件的查询的某些场景,唯一可能的缺点SET是每次都会更新两列(一个带有值,一个带有旧的)。

这是SQLFiddle演示

于 2013-09-21T04:04:04.763 回答