PDO更新不更新数据

时间:2015-06-04 09:32:33

标签: php mysql pdo

我知道这样的答案写了无数的时间,但老实说,花了大约4个小时后,我似乎找不到什么错。我的PDO更新未更新。它在几天前工作,也许我已经改变了一些东西,但现在根本不起作用。

 try {
     $query_update = $db->db_connection->prepare('UPDATE ghl_users SET user_last_reset_code = :user_password_reset_hash,
                                                           user_last_reset_request = :user_password_reset_timestamp
                                                           WHERE user_name = :user_name');
     $query_update->bindValue(':user_password_reset_hash', $user_password_reset_hash, PDO::PARAM_STR);
     $query_update->bindValue(':user_password_reset_timestamp', $temporary_timestamp, PDO::PARAM_STR);
     $query_update->bindValue(':user_name', $user_name, PDO::PARAM_STR);
     $query_update->execute();
}catch( PDOException $Exception ) {
   throw new MyDatabaseException( $Exception->getMessage( ) , (int)$Exception->getCode( ) );
}

设置所有变量(例如,当我回显它时显示值)

 echo $user_name. "<br />";
 echo $temporary_timestamp. "<br />";
 echo $user_password_reset_hash. "<br />";

值为:

johndoe
2015-06-04 09:28:29
8ctkas9f3ef35jdk2k5jaeffe115j3kkdc2ae

1 个答案:

答案 0 :(得分:1)

您只需参数化不安全的值$user_password_reset_hash即可停止注射。您可以使用SQL NOW()来更新

尝试

 try {
 $query_update = $db->db_connection->prepare('UPDATE ghl_users 
                                    SET user_last_reset_code = :user_password_reset_hash,
                                                       user_last_reset_request = NOW()
                                                       WHERE user_name = :user_name');
 $query_update->bindValue(':user_password_reset_hash', $user_password_reset_hash, PDO::PARAM_STR);
 $query_update->bindValue(':user_name', $user_name, PDO::PARAM_STR);
 if ($query_update->execute())
      {
      // success
       echo "Updated record";
     }
    else
    {
      // failure

   }



}catch( PDOException $Exception ) {
   throw new MyDatabaseException( $Exception->getMessage( ) ,  (int)$Exception->getCode( ) );
}

另外 确保ERRMODE_EXCEPTION已设置