【问题标题】:Why is this code to update a users password not working?为什么此更新用户密码的代码不起作用?
【发布时间】:2014-04-10 10:52:02
【问题描述】:
<?php
include_once 'db.php';
session_start();
if(!$_SESSION['logged_in']) {
  die('You are unauthorized to be here. 1');
}
$old_password = md5($_POST['old_password']);
$new_password = md5($_POST['new_password']);
$sql = "UPDATE users SET pass='?' WHERE user='?' AND pass='?'";
$q = $db->prepare($sql);
$q->bindParam(1, $new_password);
$q->bindParam(2, $_SESSION['username']);
$q->bindParam(3, $old_password);
$q->execute();
header('location: ../?page=account');
?>

这是我的“用户”表方案:

 `users` (`active` int(1) NOT NULL DEFAULT '1',
          `user`   varchar(200) NOT NULL,
          `pass`   varchar(200) NOT NULL,
          `admin`  int(1) NOT NULL,
          `date`   varchar(150) NOT NULL DEFAULT 'error',  
          `Paid`   varchar(200) NOT NULL DEFAULT 'None',
          KEY `user` (`user`) )
 ENGINE=MyISAM DEFAULT CHARSET=latin1;

它根本没有更新值...有什么想法吗?

【问题讨论】:

  • 有没有报错???
  • pass='?' WHERE 用户='?'并通过='?'不需要引号..
  • 如果你有错误报告会告诉你为什么查询没有更新

标签: php mysql sql session pdo


【解决方案1】:

从占位符中删除引号。

【讨论】:

    【解决方案2】:
    $sql = "UPDATE users SET pass='?' WHERE user='?' AND pass='?'";
    

    改成

    $sql = "UPDATE users SET pass=? WHERE user=? AND pass=?";
    

    【讨论】:

    • 我觉得加引号没问题。
    【解决方案3】:

    假设您的代码没有拼写错误或其他错误(未测试),逻辑上唯一的解释是用户名或旧密码不匹配

    【讨论】:

      猜你喜欢
      • 2011-10-25
      • 2014-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-10
      • 1970-01-01
      • 1970-01-01
      • 2021-12-03
      相关资源
      最近更新 更多