我有一个打印在下面的功能。这是为了使用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)
至于 - >绑定,不言自明。
请帮助,非常感谢。^^
答案 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()
的来电者也需要检查该值。