有没有办法在SQL Update语句中添加PHP IF语句
这是从个人资料更新页面;因此,如果一个人从tom@aol.com到tommy@aol.com我希望已验证的电子邮件2被重置为未验证 我的代码是有没有办法在SQL Update语句中添加PHP IF语句,php,mysql,Php,Mysql,这是从个人资料更新页面;因此,如果一个人从tom@aol.com到tommy@aol.com我希望已验证的电子邮件2被重置为未验证 我的代码是 $updateSQL = sprintf("UPDATE user SET uname=%s,email=%s, email2=%s WHERE `uid`=%s && `pass_code`=%s", GetSQLValueString($_POST['uname'], "text"),
$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"));
我也有一个现场电子邮件2_验证;目标是。。如果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"));
我猜isI最普通的方式可能是创建一个在update语句之前运行的select语句,然后
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字段,触发器将处理其余部分。您可以在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字段,触发器将处理其余部分。您可以通过使用准备好的语句来实现这一点 意思是:您将创建一个带有占位符的查询。然后你可以这样写:
$stmt = $mysqli->prepare("INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)");
if(condition) {
$stmt->bind_param('sssd', $code, $language, $official, $percent);
} else {
$stmt->bind_param('abc', dbc, $language2, $officia2l, $percent2);
}
$stmt->execute;
有关语句的更多信息,请查看此链接:
您可以通过使用准备好的语句来实现这一点 意思是:您将创建一个带有占位符的查询。然后你可以这样写:
$stmt = $mysqli->prepare("INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)");
if(condition) {
$stmt->bind_param('sssd', $code, $language, $official, $percent);
} else {
$stmt->bind_param('abc', dbc, $language2, $officia2l, $percent2);
}
$stmt->execute;
有关语句的更多信息,请查看此链接:
只要这样做,我正在使用您的代码:
如果您想要SQL解决方案,请使用。只要这样做,我正在使用您的代码:
如果您想要SQL解决方案,请使用。您的代码格式非常糟糕:d您所说的粗体是什么意思?它的标准格式来自dreamweaver。。我不像这里的大多数人那样是专业人士:这是一个个人资料更新页面;因此,如果一个人从tom@aol.com到tommy@aol.com我希望已验证的email2\u被重置为“未验证”为什么要使用sprintf生成SQL查询?当所有最新版本的PHP都带有一个非常好的、防注入的PDO MySQL驱动程序时,为什么要调用GetSQLValueString全局函数呢?为什么要在SQL查询中运行PHP?您应该连接PHP以确定要运行哪个SQL查询。您的代码的格式非常糟糕:D您所说的粗体是什么意思?它的标准格式来自dreamweaver。。我不像这里的大多数人那样是专业人士:这是一个个人资料更新页面;因此,如果一个人从tom@aol.com到tommy@aol.com我希望已验证的email2\u被重置为“未验证”为什么要使用sprintf生成SQL查询?当所有最新版本的PHP都带有一个非常好的、防注入的PDO MySQL驱动程序时,为什么要调用GetSQLValueString全局函数呢?为什么要在SQL查询中运行PHP?您应该连接PHP以确定要运行哪个SQL查询。