这是一个个人资料更新页面;因此,如果一个人将其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/

10-16 16:31