2014-02-10 130 views
1

我有2个表:MYSQL/PHP选择

  • newpw_ask

    email 
    code 
    
  • users

    id 
    username 
    password 
    email 
    sid 
    newpw_code 
    

我有此PHP代码:

$code = $_POST['code2']; 
$email = mysql_query("SELECT email FROM pw_ask WHERE code='$code'"); 

if ($pass == $pass2) { 
    if ($email) { 
     $pass3 = md5($pass); 

     mysql_query("UPDATE users SET password='$pass3' WHERE email='$email'"); 
     mysql_query("UPDATE users SET newpw_code='' WHERE email='$email'"); 
     mysql_query("DELETE FROM pw_ask WHERE code='$code'"); 

     header("Location: index.php?ret=pw"); 
    } else { 
     echo 'Wrong code'; 
    } 
} 

只有这个查询得到执行:

mysql_query("DELETE FROM pw_ask WHERE code='$code'"); 

而且当我输入正确的密码,它说:“错误代码”。

+0

请阅读本指南对散列密码。 MD5不够好。 http://www.php.net/manual/en/faq.passwords.php – Halcyon

+0

天哪,不要用这个。 '$ this =“一切”;' - 有助于回答的人,不应该; ***时期。***如果他们这样做,给出一个原因。我绝不会提出以纯文本或'md5'存储密码的问题。 –

+0

只是一个注释:使用mysqli_ *而不是mysql_ * – aerojun

回答

3

您需要正确选择电子邮件:

$sql = mysql_query("SELECT email FROM pw_ask WHERE code='$code'"); 
$row = mysql_fetch_array($sql); 
$email = $row['email']; 

顺便说一句,你还可以在1个查询更新多个字段:

mysql_query("UPDATE users SET password='$pass3' , newpw_code='' where email='$email'"); 
+0

打算把如此,但试图记住语法,因为我用PDO – AdRock

+0

不要工作,...这是我的全部代码:http://pastebin.com/pMnHx0Xz – Chris

+0

打印电子邮件,看它所包含的内容,你“$ code”是独一无二的? – Tarek