这是一个个人资料更新页面;因此,如果一个人将其email2
从[email protected]更改为[email protected],我希望将email2_verified
重置为unverified
我的代码是。。
$updateSQL = sprintf("UPDATE user SET uname=%s,email=%s, email2=%s WHERE `uid`=%s && `pass_code`=%s",
GetSQLValueString($_POST['uname'], "text"),
GetSQLValueString($_POST['email'], "text"),
GetSQLValueString($_POST['email2'], "text"),
GetSQLValueString($_POST['uid'], "int"),
GetSQLValueString($password, "text"));
我还有一个领域,目标是。。如果
email2_verified
已更改,我希望它email2
;有没有办法在sql语句中添加if语句,该语句的工作方式如下所示。。?
$updateSQL = sprintf("UPDATE user SET uname=%s,email=%s, email2=%s
WHERE `uid`=%s && `pass_code`=%s,email2_verified=%s",
if($_POST['email2']){ // **has not changed**
GetSQLValueString($_POST['uname'], "text"),
GetSQLValueString($_POST['email'], "text"),
}
if($_POST['email2']){ //**has changed**
GetSQLValueString("unverified","text"),
}
GetSQLValueString($_POST['email2'], "text"),
GetSQLValueString($_POST['uid'], "int"),
GetSQLValueString($password, "text"));
我猜(最外行的方法是)我可能需要创建一个select语句,它在update语句之前运行,并且
if htmlentities($post['email2']) <> $row['email2']
use update statement 1
else
use update statement 2
这是最好的方法还是有一个我不知道的php函数可以快速完成?
最佳答案
可以在MySQL中创建触发器。
DELIMITER //
CREATE TRIGGER detect_email_change BEFORE UPDATE ON user FOR EACH ROW
BEGIN
IF NEW.email2 != OLD.email2 THEN
SET NEW.email2_verified = "unverified";
END IF;
END;//
DELIMITER ;
然后您只需更新email2字段,触发器就会处理其余部分。
关于php - 有没有一种方法可以在SQL Update语句中添加PHP IF语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21319191/