PHP MYSQL的PDO结果if语句



看一下下面的代码。这应该检查数据库是否包含给定的用户。如果它做了,它就返回真。如果没有,则返回false。

无论如何,不管数据库中是否存在用户和密码,由于某种原因,它的计算结果不会为true!! !
function databaseContainsUser($email, $password)
{
    include $_SERVER['DOCUMENT_ROOT'].'/includes/db.inc.php';
    try
    {
        $sql = 'SELECT COUNT(*) FROM wl_user
                WHERE email = :email AND password = :password'; 
        $s = $pdo->prepare($sql);
        $s->bindValue(':email', $email);
        $s->bindValue(':password', $password);
        $s->execute("USE $dbname");
    }
    catch (PDOException $e)
    {
        $error = 'Error searching for user. ' . $e->getMessage();
        include $_SERVER['DOCUMENT_ROOT'].'/includes/error.html.php';
        exit();
    }
    $row = $s->fetch(PDO::FETCH_NUM);
    if ($row[0] > 0)
    {   
        return TRUE;
    }
    else
    {
        return FALSE;
    }
}

如有任何帮助,不胜感激

由于某些未知的原因,您正在传递"USE $dbname"字符串来执行
去掉那个字符串。

同样,你试图捕获一个异常,但显然没有告诉PDO抛出它们。你捕捉它只是为了回显一个消息,这是一个大禁忌。我最近在这个回答中解释了正确的方法

如果你的问题是不同的,你必须问(或者更好-谷歌这个问题)。
参考PDO标记wiki获取正确的连接选项,包括数据库选择和错误报告。

试试这个

 try
{
    $pdo = new PDO('mysql:host=localhost;dbname=yourDbName;', 'root', '',
    array(PDO::ATTR_PERSISTENT => true));
    $sql = 'SELECT count(*) FROM user WHERE email = :email AND password = :password'; 
    $s = $pdo->prepare($sql);
    $s->bindValue(':email', $email);
    $s->bindValue(':password', $password);
    $s->execute();
}

这是本地服务器的示例,只需将yourDbName更改为您的数据库名称。我只是在我的本地服务器上运行这段代码,它正在工作。

相关内容

  • 没有找到相关文章

最新更新