繁体   English   中英

检查数据库中是否存在电子邮件?

[英]Checking if email exists in the database?

我在我的类中有这个函数或方法,但是当我向其中插入电子邮件时它不会返回行数。 我已经测试了mysql连接等,它们都在工作。 另请注意,我通过该方法传递的电子邮件已存在于数据库中。 我的计划是获取行数,如果它大于零,则意味着我们已经在数据库中拥有此电子邮件。

public function userExist($email) {
    $query = "SELECT email FROM " . USER_TABLE . " WHERE email = ?";

    $stmt = $this->_db->prepare($query);

    $stmt->bind_param("s", $email);

    if ($stmt->execute()) {
        $stmt->store_result();
        return $stmt->num_rows;
    }
        return false;


}

我不知道如何将pdo与mysqli一起使用,但你想要做的是检查条目是否存在使用mysql EXISTS函数而不是获取结果(总是1或0)。

SELECT EXISTS(SELECT 1 FROM ".USER_TABLE." WHERE email = ?) as email_exists

在上面的查询中, email_exists将为1或0,具体取决于电子邮件是否已在表中。

使用PDO我会这样做:

$sth = $dbh->prepare("SELECT EXISTS(SELECT 1 FROM ".USER_TABLE." WHERE email = :email)");
$sth->execute(array('email' => $email));
return $sth->fetchColumn();

我会让你弄清楚如何用自己的班级自己做。

public function userExist($email) {
$query = "SELECT COUNT(*) AS num_rows FROM " . USER_TABLE . " WHERE email = ?";

$stmt = $this->_db->prepare($query);

$stmt->bind_param("s", $email);

if ($stmt->execute()) {
    $stmt->store_result();
    return $stmt->num_rows;
}
    return false;


}

你去了,注意SELECT COUNT(*) AS num_rows (我使用num_rows所以你不必更改你的代码,只要你在执行查询后像$stmt->VAR_NAME那样引用它就可以了。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM