[英]PHP MySQL update statement is not working
我在线搜索了MYSQL更新语句不起作用的可能原因,但没有一种解决方案适用于我的情况。 这些代码行可能有什么问题?
public function forgotPassword($email, $newpassword, $salt){
$result = mysqli_query($this->db->con,"UPDATE users SET user_password = '$newpassword',salt = '$salt'
WHERE email = '$email'");
我努力了,
"UPDATE 'users' SET 'user_password' = '$newpassword','salt' = '$salt'
WHERE 'email' = '$email'"
我也尝试过
"UPDATE 'DBNAME'.'users' SET 'user_password' = '$newpassword','salt' = '$salt'
WHERE 'users'.'email' = '$email'"
forgotPassword
函数正常运行,仅不执行UPDATE语句。
这是完整的功能
public function forgotPassword($email, $newpassword, $salt){
$result = mysqli_query($this->db->con,"UPDATE `melobook_customers`.`users` SET `user_password` ='$newpassword',`salt` ='$salt'
WHERE `users`.`email` ='$email'");
if ($result) {
return true;
}
else
{
return false;
}
}
我认为问题出在查询中,您在单引号中使用了表名,不应在其中使用它,在这里您可以看到: 'users' 。 除了使用单引号之外,您还可以使用`users`或将其保留为此类用户 。 因此,您的查询将如下所示:
“在用户`email` ='$ email'的情况下,更新`users` SET`user_password` ='$ newpassword',`salt` ='$ salt'”
//我也尝试过,您的第二个查询将如下所示
“更新DBNAME`.users` SET users.`user_password` ='$ newpassword',`users.`salt` ='$ salt'在`users`.`email` ='$ email'”
根据您的要求更新了代码
<?php
class check_update{
private $con;
public function __construct(){
$this->con = mysqli_connect("db_host", "db_user", "db_password", "db_name");
}
public function forgotPassword($email, $newpassword, $salt){
$sql = "UPDATE `db_name`.`table_name` SET `table_name`.`password` ='$newpassword',`table_name`.`salt` = '$salt' WHERE `table_name`.`email` ='$email'";
$result = mysqli_query($this->con, $sql);
if ($result) {
return true;
}else{
return false;
}
}
}
$check_update = new check_update();
$check_update->forgotPassword("your_email", "new_password", "salt");
?>
希望这能解决您的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.