dpleylxzx47207117 2016-05-29 16:37
浏览 71

PHP MySQL更新语句不起作用

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;
     }

     }
  • 写回答

1条回答 默认 最新

  • dougou8573 2016-05-29 17:07
    关注

    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.

    评论

报告相同问题?