Php fetchColumn()不工作

Php fetchColumn()不工作,php,login,pdo,Php,Login,Pdo,我是一个完全的php初学者,所以我想问题很明显,但到目前为止,我在任何地方都找不到我的解决方案。我正在制作一个连接到MySQL数据库的登录框。当我尝试将ID分配给所选列中的ID时,不会分配任何内容。为什么 $dbh = new PDO("mysql:host=$mysql_hostname;dbname=$mysql_dbname", $mysql_username, $mysql_password); /*** $message = a message saying we have c

我是一个完全的php初学者,所以我想问题很明显,但到目前为止,我在任何地方都找不到我的解决方案。我正在制作一个连接到MySQL数据库的登录框。当我尝试将ID分配给所选列中的ID时,不会分配任何内容。为什么

$dbh = new PDO("mysql:host=$mysql_hostname;dbname=$mysql_dbname", $mysql_username, $mysql_password);
    /*** $message = a message saying we have connected ***/

    /*** set the error mode to excptions ***/
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    /*** prepare the select statement ***/
    $stmt = $dbh->prepare("SELECT email, password, ID FROM sta402_users
                WHERE email = :email AND password = :password");

    /*** bind the parameters ***/
    $stmt->bindParam(':email', $email, PDO::PARAM_STR);
    $stmt->bindParam(':password', $password, PDO::PARAM_STR, 40);



    /*** execute the prepared statement ***/
    $stmt->execute();

    /*** check for a result ***/
    $ID = $stmt->fetchColumn(2);


    /*** if we have no result then fail boat ***/
    if($ID == false)
    {
        $message = 'Login Failed';
    }

我一直看到登录失败的消息

我不知道该在哪里检查额外的空白。如果我回显$email和$password,它们都打印得很好。您是否对密码进行哈希运算,结果/原始值是否超过40个字符?你为什么要限制它呢?你能直接在mysql中运行这个查询吗(给它实际的用户和密码,例如:WHERE email=)foo@bar.com'and password='s3cr3t'…)我之所以问这个问题,是因为密码很可能是经过哈希处理的。也许是使用mysql
PASSWORD()
或md5,但我们无法知道,基于这一点,我只是取消了限制,因为它是加密的,但ID仍然没有得到任何值..那么只做
呢。。。其中email=:email
是否会产生结果?