gpt4 book ai didi

php - 有没有办法在 SQL 更新语句中添加 PHP IF 语句

转载 作者:行者123 更新时间:2023-11-29 05:24:56 26 4
gpt4 key购买 nike

这是来自个人资料更新页面;因此,如果有人将他们的 email2 从 tom@aol.com 更改为 tommy@aol.com,我希望将 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"));

我猜(最外行的方法是)我可能必须创建一个在更新语句和之前运行的选择语句

    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 更新语句中添加 PHP IF 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21319191/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com