我的基本登录示例有点问题。当用户名和密码组合不正确时,else 语句中的错误消息不会显示。是因为 while
循环吗?我需要帮助。
<?php
$db = new PDO('mysql:host=127.0.0.1;dbname=project', 'root', '');
if(isset($_POST['username'], $_POST['password'])) {
$username = $_POST['username'];
$password = $_POST['password'];
$result = $db->query("SELECT * FROM users WHERE username='$username' AND password='$password'");
if(empty($username) || empty($password)) {
echo 'Empty';
}
while($row = $result->fetch(PDO::FETCH_OBJ)) {
if($username == $row->username && $password == $row->password) {
echo 'Logged in';
} else {
echo 'Incorrect username and password combination';
}
}
}
最佳答案
无需重新检查查询结果。因为,如果查询成功,那么fetch()函数将返回结果行,否则返回false。
更改以下代码
while($row = $result->fetch(PDO::FETCH_OBJ)) {
if($username == $row->username && $password == $row->password) {
echo 'Logged in';
} else {
echo 'Incorrect username and password combination';
}
}
到
$row = $result->fetch(PDO::FETCH_OBJ);
if($row){
echo 'Logged in';
}else{
echo 'Incorrect username and password combination';
}
注意 username 字段应该是唯一的列,因为您的登录目的。
关于php - 代码不会在 else 语句中显示错误信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39954634/