当我使用下面的代码时,我得到Undefined Index: email on $row['email']
。如果我用$row
和print_r抓取整个数组,它会显示它应该的样子。
我哪里错了?
$stmt = $db->dbh->prepare("SELECT email FROM $this->table WHERE `email`= :email");
$stmt -> bindValue(':email', $email);
$stmt->execute();
while ($row = $stmt->fetchAll()){
return $row['email'];
}
$new = new Users;
echo $new->reset_password($email);
}
答案 0 :(得分:2)
fetchAll
返回所有结果的二维数组。要一次只获取一行,您应拨打$stmt->fetch()
,而不是$stmt->fetchAll()
。
while ($row = $stmt->fetch()) {
...
}
但是既然你回来了,你根本就不应该使用循环。 return
语句将在第一次迭代后终止循环。只需使用if
声明。
if ($row = $stmt->fetch()) {
return $row['email'];
}
这整段代码没有多大意义 - $newemail
保证与$email
相同,你为什么要归还它?它可能应该是:
if ($stmt->fetch()) { // Email was found
return true;
} else {
return false;
}
答案 1 :(得分:1)
检查数据库中是否输入了电子邮件,
$stmt = $db->dbh->prepare("SELECT 1 FROM $this->table WHERE email= ?");
$stmt->execute([$email]);
return $stmt->fetchColumn();
答案 2 :(得分:0)