2015-03-25 36 views
0

我有一些方法来保存记录,包括用户令牌和电子邮件这样的:的print_r返回1 althought没有记录保存

public function saveResetToken($email, $resetToken) 
    { 
     try { 

      $conn = Database::getConnection(); 
      // Connect and create the PDO object 
      $conn->exec('SET CHARACTER SET utf8');  // Sets encoding UTF-8 
      // Define and prepare an INSERT statement 
      $sql = 'UPDATE users SET reset_token=:token WHERE email =:email limit 1'; 
      $stmt =$conn->prepare($sql); 

      // Adds value with bindParam 
      $stmt->bindParam(':email', $email, PDO::PARAM_STR); 
      $stmt->bindParam(':token', $resetToken,PDO::PARAM_STR); 

      if ($stmt->rowCount()===1){ 

       $conn = null;  // Disconnect 
       return true; 

      }else{ 
       return false; 
      } 

     } catch (PDOException $e) { 
      include('../views/error.php'); 
      include('../views/admin/includes/footer.php'); 
      exit(); 
     } 
    } 

当我使用的print_r $ stmt-> rowCount时(),其返回“1”,但是当在我的reset_token检查时,我发现没有数据。所以我的代码有什么错误?

+0

你应该在'...-> bindParam(...);'后面运行'$ stmt-> execute();'来更新数据库。你在说'$ resetToken'是空的吗?你在做什么'print_r'?如果它在整个函数中有“无数据”,那么你必须错误地传递它。让我知道这是否回答你的问题。我正在试图找到更多的信息,然后才作出答复。 – DutGRIFF 2015-03-25 03:04:22

+0

@DutGRIFF你是对的,我很粗心,当我复制粘贴我的代码我覆盖执行(),但为什么它返回1当我用户Print_r($ user-> saveResetToken($ email,$ activasion)?:D – Ying 2015-03-25 03:10:27

+0

请更新你的问题中的代码我没有看到'print_r($ user-> saveResetToken($ email,$ activasion)',所以我不能告诉你它为什么返回1.除非你想知道为什么整个函数返回1. – DutGRIFF 2015-03-25 03:16:53

回答

0

经过一番调查,我意识到你问为什么这个函数返回1当你期待true。当你的函数返回true时,它实际上会返回1,所以它会返回1,但是如果你做if($user->saveResetToken($email, $activation)) print('this is true'),你可以看到这实际上评估为true。

试试这个:

function myFunc() { 
    return true; 
} 
echo myFunc(); // output: 1 
echo myFunc()==true; // output: 1 
echo myFunc()==1; // output: 1 
echo myFunc()===true; // output: 1 
echo myFunc()===1; // output: 1 

在PHP true实际上意味着不为零。

这里有被认为是假的从文档中的值:

当转换为boolean时,以下值被认为是FALSE:

the boolean FALSE itself the integer 0 (zero) the float 0.0 (zero) the empty string, and the string "0" an array with zero elements an object with zero member variables (PHP 4 only) the special type NULL (including unset variables) SimpleXML objects created from empty tags

退房的php docs on booleans为更多信息。

至于记录未保存,您必须在我的评论中提到的查询上使用->execute()