Function 函数返回1而不是结果(PDO)

Function 函数返回1而不是结果(PDO),function,pdo,Function,Pdo,我有一个函数,如下所示。这意味着使用PDO动态地从数据库中提取用户数据(这种情况很明显,而且一切都很好)。但是,它不是返回结果(即给您的电子邮件(“电子邮件”),而是返回数字1 以下是我的设置: public function you($row) { if(isset($_COOKIE["SK"])) { $pw = $this->baseXencode($_SESSION["password"]); $usr = $this->baseXen

我有一个函数,如下所示。这意味着使用PDO动态地从数据库中提取用户数据(这种情况很明显,而且一切都很好)。但是,它不是返回结果(即给您的电子邮件(“电子邮件”),而是返回数字1

以下是我的设置:

public function you($row) {
    if(isset($_COOKIE["SK"])) {
        $pw = $this->baseXencode($_SESSION["password"]);
        $usr = $this->baseXencode($_SESSION["username"]);
        $q = "SELECT $row FROM SN_users WHERE username=':USR' AND password=':PW'";
        $this->netCore->q($q);
        $this->netCore->bind(":PW", $pw);
        $this->netCore->bind(":USR", $usr);
        $result = $this->netCore->single();
        $result = $result[$row];
        return $result;
    } else {
        $q = "SELECT $row FROM SN_users WHERE username='Anonymous' AND password='Anonymous'";
        $this->netCore->q($q);
        $result = $this->netCore->single();
        $result = $result[$row];
        return $result;
    }
}
}

$this->netCore->q() = PDO query
$this->netCore->single() PDO fetch(PDO::FETCH_ASSOC)
至于->绑定,不言自明


非常感谢您的帮助。^^

在使用参数化查询时,不要将参数放在引号中。这样可以防止参数被替换,因为它被视为文本字符串。因此应该:

    $q = "SELECT $row FROM SN_users WHERE username=:USR AND password=:PW";
    $result = $this->netCore->single();
    if ($result) {
        return $result[$row];
    } else {
        return false;
    }
我很惊讶它返回了
1
。我希望您的代码会导致错误,因为
single()
应该返回
false
,而
false[$row]
无效

您还应该检查是否返回了一行;如果用户名和密码无效,您将不会得到结果。因此应该是:

    $q = "SELECT $row FROM SN_users WHERE username=:USR AND password=:PW";
    $result = $this->netCore->single();
    if ($result) {
        return $result[$row];
    } else {
        return false;
    }

you()
的调用方也需要检查值。

这是公共函数single(){$This->exe();return$This->state->fetch(PDO::fetch_ASSOC);}在我的spiritNET类中。另外,我也尝试了你的建议,运气不好……也许single()函数会有帮助?我遵循了一个名为Rool out your your your PDO class.”此处的链接:
single()
正是我所期望的。你确定你提供了有效的用户名和密码吗?可能的,因为我刚刚将其缩小到了php$\u会话[]中存储的一个验证用户,我看到你已经接受了答案。你知道为什么之前它不起作用了吗?