Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP/MySQL中比较两个电子邮件地址总是返回false_Php_Mysql_Pdo - Fatal编程技术网

在PHP/MySQL中比较两个电子邮件地址总是返回false

在PHP/MySQL中比较两个电子邮件地址总是返回false,php,mysql,pdo,Php,Mysql,Pdo,我正在尝试从一个唯一的邀请代码链接注册用户,该链接会根据他们的电子邮件地址进行检查。在注册时,我正在运行一个检查,看看他们发布的电子邮件地址是否与我们存储在数据库中的电子邮件地址匹配。一切似乎都运行得很好,我已经验证了发送到check函数的电子邮件和代码,但由于某些原因,这会不断返回false。我错过了什么 public function CheckEmail($email, $code, $db) { $query = $this->db->prepar

我正在尝试从一个唯一的邀请代码链接注册用户,该链接会根据他们的电子邮件地址进行检查。在注册时,我正在运行一个检查,看看他们发布的电子邮件地址是否与我们存储在数据库中的电子邮件地址匹配。一切似乎都运行得很好,我已经验证了发送到check函数的电子邮件和代码,但由于某些原因,这会不断返回false。我错过了什么

public function CheckEmail($email, $code, $db) 
    {

        $query = $this->db->prepare("SELECT 'email' FROM `userlogin` WHERE `code`= ?");
        $query->bindValue(1, $code, PDO::PARAM_STR);

        try
        {

            $query->execute();
            $data = $query->fetch();
            $confirmEmail = $data['email'];


            if($confirmEmail == $email)
            {
            return true;
            }

            else
            {
            return false;
            }

        } 

        catch (PDOException $e)
        {
            die($e->getMessage());
        }

    }
你可能想

"SELECT `email` FROM `userlogin` WHERE `code`= ?"

您将电子邮件包装为单引号,而不是反勾号,因此您确实选择了文本
电子邮件
,以与之进行比较是否可以检查它们是否属于相同的数据类型?另外,如果您有phpmyadmin,请尝试手动运行查询以查看它返回的内容。您可能会感到惊讶,并发现您没有得到预期的结果。

@Fred ii-他正在使用参数化查询,因此没有。@Shamil I删除了我的评论。thanks@Fred-ii-无需删除您的评论:(@Shamil I删除了它,因为它与问题无关。@DrGraves请将其标记为已解决(投票箭头下应有一个绿色复选标记):)