最近,我一直在研究我的登录系统。在我尝试给予我的客户人员特权之前,一切进展顺利。因此,我在成员(member)表中创建了一个名为“Rank”的新列,并将其设置为 int(11)。我将我的用户等级设置为 7。现在,当我登录成员(member)页面时,我希望我的帐户和所有其他等级为 7 的帐户拥有特殊权限。 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');
?>
我没有收到任何错误,但我收到消息说“您不是工作人员”,而不是“您是工作人员”。即使我以排名 7 的用户登录。我在这里缺少什么?我还需要添加和更改哪些内容?
最佳答案
我收到“您是一名工作人员”。执行代码时打印。
我最好的选择是您与数据库的连接无法正常工作,或者您的查询有误,可能是拼写错误。
要验证这一点,您应该 var_dump()
您的 $result
以查看从数据库中获取的内容,如下所示:
...
$result = $stmt->fetch(PDO::FETCH_ASSOC);
var_dump($result);
...
就我而言,打印以下内容:
array(1) { ["Rank"]=> string(1) "7" }
这样我就可以从$result
中获得“Rank”
。
确保您得到类似的东西。
编辑以下答案:
由于您获得的 $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>";
}
关于php - 从数据库获取 int,如果 int = 特定值,则执行某些操作。如果不做别的事,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41786085/