2013-11-23 50 views
0

我正在用php/mysql測試密碼更新過程。我沒有提交任何錯誤,但我的值不更新。有任何想法嗎?php/mysql更新不起作用

if (!empty($_POST['password']) && !empty($_POST['password2'])){ 
    $id = $_GET['id']; 
    $password = md5(mysql_real_escape_string($_POST['password'])); 
    $sql = mysql_query("UPDATE users SET `Password` = '$password' WHERE UserID = '$id'"); 
    if ($sql){ 
     echo $password, $id; 
    }else{ 
     echo mysql_error(); 
    } 
} 
+0

更多調試:打印出結果查詢,嘗試在phpMyAdmin等請問您的代碼達到'回聲$ PW,$ id'呢? – mario

+1

您正在合併'$ _GET'和'$ _POST'。這是故意的,還是應該''_GET ['id']'是'$ _POST ['id']'而不是? –

+0

嘗試'$查詢=「更新用戶SET密碼='$密碼'WHERE UserID ='$ id'」'和調試$查詢變量,並檢查它是否會在你的後端工作。 – Edper

回答

-2

這是您試圖更新的正確ID嗎?

+1

如果您不回答問題,請添加此問題作爲對問題的評論。 –

+0

這是一個答案,但以問題的形式 – Sico

+0

所以它是一個問題形式的答案。真? –

1

只是一個預感。試着在可變刪除引號,$id

if (!empty($_POST['password']) && !empty($_POST['password2'])){ 
    $id = $_GET['id']; 
    $password = md5(mysql_real_escape_string($_POST['password'])); 
    $sql = mysql_query("UPDATE users SET `Password` = '$password' WHERE UserID = {$id}"); 
    if ($sql){ 
     echo $password, $id; 
    }else{ 
     echo mysql_error(); 
    } 
} 
1

你結合$_GET$_POST。嘗試更改$_GET['id']$_POST['id']。如果這不起作用,請嘗試將

var_dump($_POST); 
var_dump($_GET); 

添加到您的代碼中。這可能會幫助您調試。

+0

雖然有可能有$ _POST和$ _GET。但你說得對,來自OP的更多信息是有幫助的。 –

+0

是的。如果沒有別的,它會消除'$ _GET' /'$ _POST'作爲問題。 –

+0

我在URL中傳遞一個id來驗證用戶何時檢索收件箱中的鏈接。我嘗試從URL中獲取該ID以將其與我存儲的內容進行比較。 ../reset_password.php?id=1 –

0

這似乎工作:

$id = $_REQUEST['id']; 
if (!empty($_POST['password']) && !empty($_POST['password2'])){ 
    $password = md5(mysql_real_escape_string($_POST['password'])); 
    $sql = mysql_query("UPDATE users SET Password = '".$password."' WHERE UserID = '".$id."'"); 
    if ($sql){ 
     echo "Password reset."; 
     echo "<meta http-equiv='refresh' content='1;index.php' />"; 
    }else{ 
     echo mysql_error(); 
    } 
}else{ 
?> 
<form role="form" action="[Leave blank]" method="post" name="resetpassword" id="resetpassword"> 
+0

再檢查一下你可能想要做的:'$ _POST ['password'] == $ _POST ['password2']'。 –

+0

Tks!試圖讓它在這一點上工作,然後進行錯誤/形式檢查。 –

0

mysql_real_escape_string回報TRUE/FALSE

只是用它這樣

if(mysql_real_escape_string($_POST['password'])) 
{ 
    $password = md5($_POST['password']); 
} 

這將現在的工作!

建議:

一條路可走。無論是GET或POST