我在网上搜索了为什么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;
}
}
答案 0 :(得分:1)
我认为问题出在您的查询中,您在单引号中使用了不应使用的表名,在这里您可以看到:' users' 。您可以使用`users` 代替单引号,也可以将其保留为用户。所以你的查询看起来像这样,
"更新`users` SET`user_password` =' $ newpassword',`salt` =' $ salt' 在哪里`email` =' $ email'"
//我也尝试过, 你的第二个查询看起来像这样
"更新`DBNAME``users` SET`users`user_password` =' $ newpassword',`users` .salt` =' $ salt&#39 ; 在哪里`用户'。电子邮件`=' $ 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");
?>
希望这能解决您的问题。