最近,我一直在研究我的登录系统。它一直很顺利,直到我试图给我的帐户员工特权。所以,我在我的成员表中创建了一个名为" Rank"我把它设置为int(11)。我将用户排名设置为7.现在,当我登录到memberspage时,我希望我的帐户和Rank 7的所有其他人都有特殊的权限。 7岁或以上的用户不会获得任何特殊的特权。所以,继承了我试过的一些代码。
<?php require('includes/config.php');
$stmt = $db->prepare('SELECT Rank from members where memberID=?');
$stmt->bindParam(1, $memberID, PDO::PARAM_INT);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
if($result['Rank'] == 7)
{
echo "You are a staff member.";
}
if($result['Rank'] < 7)
{
echo "You are not a staff member.";
}
//if not logged in redirect to login page
if(!$user->is_logged_in()){ header('Location: login.php'); }
//define page title
$title = 'Members Page';
//include header template
require('layout/header.php');
?>
<div class="container">
<div class="row">
<div class="col-xs-12 col-sm-8 col-md-6 col-sm-offset-2 col-md-offset-3">
<h2>Member only page - Welcome <?php echo $_SESSION['username']; ?></h2>
<p><a href='logout.php'>Logout</a></p>
<hr>
</div>
</div>
</div>
<?php
//include header template
require('layout/footer.php');
?>
我没有收到任何错误,但我得到的信息是&#34;你不是工作人员&#34;而不是你是一名工作人员。即使你登录了排名第7的用户..我在这里失踪了什么?我还需要包括和改变什么?
答案 0 :(得分:0)
我得到“你是一名工作人员。”执行代码时打印。
我最好的选择是你与数据库的连接不起作用,或者你的查询中有错误,可能是错字。
要验证这一点,您应var_dump()
$result
查看您从数据库中获取的内容,如下所示:
...
$result = $stmt->fetch(PDO::FETCH_ASSOC);
var_dump($result);
...
在我的情况下打印以下内容:
array(1) { ["Rank"]=> string(1) "7" }
所以我可以从"Rank"
中获取$result
。
确保你得到类似的东西。
编辑以下答案:
由于您获得的$result
为false
,请尝试获取一些信息,说明您的查询失败的原因如下:
试试这个:
try {
$stmt = $db->prepare($query);
$stmt->execute($values);
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
if($result === false) {
var_dump($stmt->errorInfo());
echo "<br>";
}
} catch (PDOException $e) {
var_dump($e->getMessage());
echo "<br>";
}