Function 函数返回1而不是结果(PDO)
我有一个函数,如下所示。这意味着使用PDO动态地从数据库中提取用户数据(这种情况很明显,而且一切都很好)。但是,它不是返回结果(即给您的电子邮件(“电子邮件”),而是返回数字1 以下是我的设置: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
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会话[]中存储的一个验证用户,我看到你已经接受了答案。你知道为什么之前它不起作用了吗?