使用 PDO returns 无密码验证

Password verify using PDO returns nothing

我正在尝试创建一个登录页面,但是当我尝试登录时,我得到一个空白页面 returned,我也没有收到任何错误。我想 return 基于登录脚本结果的成功或失败消息。我哪里错了?

登录页面:

try {
    $dbh = new PDO('mysql:host=' . DB_HOST . ';dbname=' . DB_USERNAME, DB_USERNAME, DB_PASSWORD);
    } catch   (PDOException $e) {
        print "Error!: " . $e->getMessage() . "<br/>";
        die();
    }
$username   = $_POST['username'];
$password   = $_POST['password'];

 $sql = "SELECT * FROM users WHERE username = : username LIMIT 1";
$query = $dbh->prepare( $sql );
$query->execute( array( ':username'=>$username ) );
$results = $query->fetchAll( PDO::FETCH_ASSOC ); 

foreach( $results as $row ){ 
     if(password_verify($_POST['password'], $password)){
        echo 'verified';
    }
    else
    {
        echo 'not verified';
    }
    }

创建用户页面:

$username = $_POST["username"];
$email = $_POST["email"];
$password = $_POST["password"];
$hash = password_hash($password, PASSWORD_DEFAULT);
//sets type to '1' which is used for a user.
$stmt = $dbh->prepare("insert into users set username=?, email=?, password=?, type= '1'");
$stmt->execute([$username, $email, $hash]);


echo "<p>Thank you for registering!</p>";

冒号和"username"

之间有一个space
'username = : username'
             ^

不应该有任何 space 并且读作 :username

您正在使用以下几行:

array( ':username'=>$username )