PHP登录函数找不到正确的用户名和密码

PHP登录函数找不到正确的用户名和密码,php,mysql,database,login,pdo,Php,Mysql,Database,Login,Pdo,我试图创建一个登录函数,将我的数据库连接到表“admins”。然而,每当我试图通过浏览器登录到我的数据库时,它都会回显我的错误消息,即它没有正确的用户名和密码。我想这与我的查询没有连接到数据库有关,但目前我完全没有想法。您的代码可以简化,因为我不确定查询中是否有额外的空间或“PDO::FETCH_NUM”的用法。我提议如下 // query $result = $server->prepare("SELECT * FROM admins WHERE username= :

我试图创建一个登录函数,将我的数据库连接到表“admins”。然而,每当我试图通过浏览器登录到我的数据库时,它都会回显我的错误消息,即它没有正确的用户名和密码。我想这与我的查询没有连接到数据库有关,但目前我完全没有想法。

您的代码可以简化,因为我不确定查询中是否有额外的空间或“PDO::FETCH_NUM”的用法。我提议如下

    // query
     $result = $server->prepare("SELECT * FROM admins WHERE username= :hjnji AND password=     :asos");
     $result->bindParam(':hjnji', $user);
     $result->bindParam(':asos', $password);
     $result->execute();
     $rows = $result->fetch(PDO::FETCH_NUM);
     if($rows > 0) {
     header("Location: database.php");
     }

谢谢你的帮助!我已经将简化的代码添加到sublime中,但仍然出现错误“请输入正确的用户名和密码”-这让我发疯。你对错误消息中可能出现的其他内容有什么建议吗?代码并不完美,你需要更改一些变量名($username到$user)。嗯,数据库结构是什么样子的?数据库只是一个简单的mysql数据库,有两个表,管理员和用户。所有的数据库都有名字,姓氏,电子邮件,这就是它的用户-管理员有名字(用户名)和密码。这是我第一次使用PHP,请原谅我的疏忽OK,您是如何定义$username和$password的?通过$\u POST['username']和$\u POST['password']对吗?没错,是的,使用$\u POST。就在发布之后,我有了if($user=''){$errmsg_arr[]='请输入用户名';$errflag=true;}if($password=''){$errmsg_arr[]='请输入密码';$errflag=true;}--这一切都正确吗?即使您使用的是预先准备好的语句,您仍然存在一个安全漏洞:您的查询使得同一用户名可能存在不同的密码。它还与MySQL执行这些字符串比较时不区分大小写的问题相冲突,如果您的密码是明文,这将是一个额外的问题。更好的方法是只搜索用户名,然后分别检查(哈希)密码字段。它还将有助于调试为什么找不到需要它的行,因为它将两个比较分开。
$query = $server->prepare("SELECT * FROM admins WHERE username = ? AND password = ?");
$query->execute(array($username, $password));

if($query->rowCount() == 1) {
    // Username / Password correct

    header("Location: database.php");
    exit();
} else {
    // Username / Password incorrect
}