2014-03-07 185 views
0
<?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; 

它根本就沒有更新的值在所有...任何想法?

+0

是否引發任何錯誤??? –

+0

pass ='?' WHERE用戶='?' AND pass ='?'不需要引號.. –

+0

如果你有錯誤報告它會告訴你爲什麼查詢沒有更新 – Baig

回答

3

從佔位符中刪除引號。

-1

假設你的代碼沒有一個錯字或其他錯誤(未測試),在邏輯上唯一可以解釋的是,無論是用戶名或舊密碼不匹配

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

改變它

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

我認爲加引號不是問題。 – Baig

相關問題