我正在从数据库中获取数据
while ($row = mysqli_fetch_array($select_user_query)){
$userId = $row ['id'];
$check_email = $row ['userEmail'];
$check_password = $row ['userPassword'];
}
然后我比较输入的详细信息是否与从db获取的详细信息匹配。
if ($email === $check_email || $hashed_password === $check_password) {
// header ("Location:../dashboard.php");
echo "success";
} else {
// header ("Location: ../signup.php");
echo "failed";
}
但问题是,如果输入的电子邮件地址在数据库中不存在,则会返回错误
注意:未定义的变量:check_email in 第37行的C:\ xampp2 \ htdocs \ honest \ includes \ _ login_process.php
但是,如果电子邮件存在,则返回成功。
所以问题是,这里的最佳做法是什么?如果它是空的,我应该将默认值设置为$check_email
吗?
答案 0 :(得分:1)
来自查询的check_email参数为null,因此在将其分配给另一个变量之前需要进行空检查,即
$check_email = $row['userEmail'] != null ? $row['userEmail'] : '';
答案 1 :(得分:1)
假设userEmail
是唯一的,您的表名为" user_table"并且$conn
是您的mysqli
连接/实例,您可以检查匹配的行如此...
$stmt = $conn->prepare(
'SELECT `id` FROM `user_table` WHERE `userEmail` = ? AND `userPassword` = ? LIMIT 1');
$stmt->bind_param('ss', $email, $hashed_password);
$stmt->execute();
$stmt->bind_result($userId);
if ($stmt->fetch()) {
echo 'success';
// $userId is also set to the result `id` now
} else {
echo 'failed';
}