I have searched online for possible reasons of why a MYSQL update statement won't work but none of the solutions work on my case. What could be wrong in these lines of code?
public function forgotPassword($email, $newpassword, $salt){
$result = mysqli_query($this->db->con,"UPDATE users SET user_password = '$newpassword',salt = '$salt'
WHERE email = '$email'");
I have tried,
"UPDATE 'users' SET 'user_password' = '$newpassword','salt' = '$salt'
WHERE 'email' = '$email'"
I have also tried,
"UPDATE 'DBNAME'.'users' SET 'user_password' = '$newpassword','salt' = '$salt'
WHERE 'users'.'email' = '$email'"
The forgotPassword
function works properly, only the UPDATE statement is not executed.
Here is the complete function
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;
}
}
I think the problem is within your query, you used table name within single quotes which should not be used, here you can see: 'users'. Instead of the single quotes you've to use `users` or you can leave that like this users. So your query will look something like this,
"UPDATE `users` SET `user_password` = '$newpassword',`salt` = '$salt' WHERE `email` = '$email'"
//I have also tried, Your second query will look something like this
"UPDATE `DBNAME`.`users` SET `users`.`user_password` = '$newpassword',`users`.`salt` = '$salt' WHERE `users`.`email` = '$email'"
Updated Code Based on your requirement
<?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");
?>
Hope this will fix your problem.