4

我的班级中有这个函数或方法,但是当我向其中插入电子邮件时它不会返回行数。我已经测试了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;


}
4

2 回答 2

2

我不知道如何将 pdo 与 mysqli 一起使用,但您要做的是使用 mysqlEXISTS函数检查条目是否存在,然后获取结果(始终为 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();

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

于 2012-02-22T20:42:53.740 回答
1
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在执行查询后引用它就可以了。)

于 2012-02-22T20:51:28.537 回答