MySQL更新用户密码和激活密钥

时间:2014-01-07 作者:rolu

我没有使用默认的WP重置密码表单,而是创建了自己的表单,我被这个准备好的语句难住了。

我试图通过检查用户的user\\u登录名和user\\u activation\\u密钥来更新用户的密码。当我运行这个查询并返回结果时,我得到的是int(0)的返回值。它似乎没有返回任何用户行。

我还回显每个POST变量,以确保其值是正确的,因此我不确定问题所在。

$newpassword = $_POST[\'newpass\'];
$wp_hasher = new PasswordHash(16, FALSE);
$hashedPwd = wp_hash_password($newpassword);

$useremail = $_POST[\'useremail\'];
$key = $_POST[\'key\'];

$resetQuery = $wpdb -> query($wpdb -> prepare("UPDATE wp_users SET user_pass = %s, user_activation_key = \'\' WHERE user_login = %s AND user_activation_key = %s", 
                                                $hashedPwd, $useremail, $key));
如果有人能帮助我,那就太好了!谢谢

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

您正在使用用户电子邮件作为用户登录。为便于阅读而格式化的代码如下所示:

$resetQuery = $wpdb -> query(
  $wpdb -> prepare(
    "UPDATE wp_users 
    SET user_pass = %s, user_activation_key = \'\' 
    WHERE user_login = %s AND user_activation_key = %s", 
    $hashedPwd, 
    $useremail, 
    $key
  )
);
The$useremail 参数与user_login = %s 占位符。

拥有user_login 火柴user_email 不正常。除非您更改了用户注册,以便登录始终与不起作用的电子邮件匹配,我怀疑这是您的问题。您需要重写查询和/或支持代码,以便查询匹配user_loginuser_loginuser_emailuser_email.

结束

相关推荐

PHP致命错误-$wpdb是否是非对象?

我在Wordpress 3.6.1和Buddypress的多站点中遇到了许多致命错误:PHP Fatal error: Call to a member function suppress_errors() on a non-object in /myblog/wproot/wp-includes/option.php on line 143引用的非对象是全局值$wpdb,行中为:$suppress = $wpdb->suppress_errors();函数中的wp_load_allop