Php 表单用户名和数据库用户名不一致,即使它们相同

Php 表单用户名和数据库用户名不一致,即使它们相同,php,mysql,blowfish,Php,Mysql,Blowfish,我正在尝试使用blowfish、PHP和MySQL创建登录 我在数据库中有一个用户设置,并在表单中输入了相同的信息。通过使用echo进行检查,代码可以到达if语句(请参见它们不匹配(即,它进入if语句并使用密码失败,因为它没有正确的用户)(使用!=) 一双新鲜的眼睛就好了 谢谢 PHP代码 $query = "SELECT * FROM 'users' WHERE LOWER('username')=:username"; $stmt=$dbh->prepare($query); $st

我正在尝试使用blowfish、PHP和MySQL创建登录

我在数据库中有一个用户设置,并在表单中输入了相同的信息。通过使用echo进行检查,代码可以到达if语句(请参见它们不匹配(即,它进入if语句并使用密码失败,因为它没有正确的用户)(使用!=) 一双新鲜的眼睛就好了

谢谢

PHP代码

$query = "SELECT  * FROM 'users' WHERE LOWER('username')=:username";
$stmt=$dbh->prepare($query);
$stmt->bindValue(':username',strtolower ($_POST['username']));
$stmt->execute();


if ($stmt->rowCount() == 1)
{
    $row=$stmt->fetch(PDO::FETCH_ASSOC);
    require('blowfish.php');
    require('bcrypt.class.php');
    $bcrypt = new Bcrypt(4);
        if($bcrypt->verify($_POST['password'],$row['password']))
    {
        echo"logged in!! fish";
    }
}
HTML代码:

<form method="POST" action="authorise.php">
Username: <input type ="text" name="username"/><br/>
Password: <input type ="password" name="password"/><br/>
<input type="submit"/>
</form>

用户名:
密码:

查询中不需要单引号

$query = "SELECT  * FROM users WHERE LOWER(username)=:username";
如果使用任何保留关键字,则可能需要在列名和表名上使用反勾号。在查询中使用字符串来转义它们时,会使用引号。

您的查询是错误的

$query = "SELECT  * FROM 'users' WHERE LOWER('username')=:username";
在下面的函数中使用单引号本质上是询问MySQL参数username是否等于文本字符串username而不是名为username的列。即如果
$\u POST['username']
等于“t”,您的查询是询问Dos robbert t=username。否,它等于robbert。表也是如此。请使用反勾号或不使用引号

在MySQL中,backticks(`)用于引用列或表名。这应该是您要使用的查询

$query = "SELECT  * FROM users WHERE LOWER(username)=:username";

不要将表和列视为字符串。您好,这是否意味着我不使用“:username”和“$\u POST['username]”。同时更改select语句:$query=“select*FROM users WHERE LOWER(username)=:username”;谢谢您的帮助否,您希望在查询中保留
:username
,并使用
bindParam
方法来最小化SQL注入攻击。我得到以下错误:致命错误:调用C:\xampp\htdocs\newlogin\authorize.php中未定义的方法Bcrypt::verify(),在第27行。有问题的行是:if($Bcrypt->verify($)\u POST['password'],$row['password']),如果您能帮助我,我真的很感激您的bcrypt对象没有包含名为verify的方法。