选择查询仅返回2个请求列中的1个

时间:2014-06-26 10:22:11

标签: php sql

我90%确定问题出在sql语法中,但似乎无法准确找到问题所在。 sql返回正确的电子邮件,但密码返回空。我尝试在数据库中使用不同的列,但我遇到了同样的问题。

注意:密码在db。中进行哈希。

代码:

$sql = $link->prepare('SELECT email, password FROM users WHERE email=:email');
$sql->bindParam(':email', $email);
$sql->execute();
$resultemail = $sql->fetchColumn();
$resultpassword = $sql->fetchColumn(1);
if (!$resultemail){
    echo "empty";
} else {
    echo $resultemail;
}
if (!$resultpassword){
    echo "empty";
} else {
    echo "$resultpassword";
}

1 个答案:

答案 0 :(得分:2)

每次调用fetchColumn时,它都会移动到结果集的下一行,并从该行中获取指定的列(默认为第0列)。因此,您要将$resultemail设置为结果第一行的第一列,将$resultpassword设置为结果第二行的第一列。但由于查询只返回一行,因此您需要将$resultpassword设置为false

您应该获取整行,并将变量设置为该行的相应列。

$row = $sql->fetch(PDO::FETCH_ASSOC);
if ($row) {
    $resultemail = $row['email'];
    $resultpassword = $row['password'];
    if (!$resultemail){
        echo "empty";
    } else {
        echo $resultemail;
    }
    if (!$resultpassword){
        echo "empty";
    } else {
        echo "$resultpassword";
    }
} else {
    echo "empty";
}