我的班级中有这个函数或方法,但是当我向其中插入电子邮件时,它不会返回行数。我已经测试了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;
}
答案 0 :(得分:2)
我不知道如何将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();
我会让你弄清楚如何用自己的班级自己做。
答案 1 :(得分: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
那样引用它就可以了。 )