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

时间:2014-01-06 14:05:49

标签: function pdo

我有一个打印在下面的功能。这是为了使用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)

至于 - >绑定,不言自明。

请帮助,非常感谢。^^

1 个答案:

答案 0 :(得分:0)

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

    $q = "SELECT $row FROM SN_users WHERE username=:USR AND password=:PW";

我很惊讶它正在回归1。我希望您的代码会导致错误,因为single()应该返回false,而false[$row]无效。

您还应该检查是否返回了一行;如果用户名和密码无效,则无法获得结果。所以它应该是:

    $result = $this->netCore->single();
    if ($result) {
        return $result[$row];
    } else {
        return false;
    }

you()的来电者也需要检查该值。