2013-11-23 51 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