我正在尝试找到一种将值插入到两列之一中的方法,具体取决于哪一列是 NULL。
$accept_sth = $dbh->prepare("UPDATE user_properties
IF(followup_offer <> NULL, fstatus=?)
ELSE (istatus=?)
WHERE id=?");
$accept_sth->execute($_POST['option'], $_POST['id']);
我做错了。
我正在尝试找到一种将值插入到两列之一中的方法,具体取决于哪一列是 NULL。
$accept_sth = $dbh->prepare("UPDATE user_properties
IF(followup_offer <> NULL, fstatus=?)
ELSE (istatus=?)
WHERE id=?");
$accept_sth->execute($_POST['option'], $_POST['id']);
我做错了。
没有……脑损伤……必要的。您可以通过查询来完成
UPDATE user_properties
SET fstatus = IF(followup_offer IS NULL, fstatus, ?),
istatus = IF(followup_offer IS NULL, ?, istatus)
WHERE id = ?
注意:对于这种带有条件的查询的某些场景,唯一可能的缺点SET
是每次都会更新两列(一个带有值,一个带有旧的)。
这是SQLFiddle演示