嘿,我正在学习一种查询我的数据库的新方法,因为它意味着更好,更安全,我建立了可以重复使用的预处理语句。
问题是,这是一种不同的方式来看待它,我还没有习惯它,但仍然有一些我不清楚的事情。
所以我的脚本试图将三个段落绑定到一个查询,以允许用户登录我的站点。我使用与以前相同的脚本,这使用了用户名和密码......这很好用:
$query = "SELECT *
FROM user
WHERE email = ? AND password = ?
LIMIT 1";
if($stmt = $this->conn->prepare($query))
{
$stmt->bind_param('ss', $un, $pwd);
$stmt->execute();
if($stmt->fetch())
{
//$uid = $stmt->fetch(id);
//$_SESSION['uid'] = $uid;
$stmt->close();
return true;
}
}
但是当我检查用户是否是管理员时我根本不喜欢它:
$query = "SELECT *
FROM user
WHERE email = ? AND password = ? AND isAdmin = ?
LIMIT 1";
if($stmt = $this->conn->prepare($query))
{
$stmt->bind_param('ssi', $un, $pwd, $isAdmin);
$stmt->execute();
if($stmt->fetch())
{
//$uid = $stmt->fetch(id);
//$_SESSION['uid'] = $uid;
$stmt->close();
return true;
}
}
此外,我将isAdmin声明为类的开头的全局私有var,如下所示:
private $isAdmin = "1";
所以是的,我知道我正在测试的用户在数据库上的isActive为1但是当它进入此脚本时它返回false。
就像我说我是这种写作查询风格的新手,所以任何帮助都会很棒。
感谢您的时间。
答案 0 :(得分:0)
好的,所以我想我已经明白了。我将isActive var添加到正在使用它的函数中,而不是它是全局的,现在它工作正常。
谢谢你的帮助。关于此事的任何其他提示都非常受欢迎!