从数据库获取int,如果int =特定值,则执行某些操作。如果不做别的事

时间:2017-01-22 00:29:15

标签: php mysql database localhost local

最近,我一直在研究我的登录系统。它一直很顺利,直到我试图给我的帐户员工特权。所以,我在我的成员表中创建了一个名为" 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的用户..我在这里失踪了什么?我还需要包括和改变什么?

1 个答案:

答案 0 :(得分:0)

我得到“你是一名工作人员。”执行代码时打印。

我最好的选择是你与数据库的连接不起作用,或者你的查询中有错误,可能是错字。

要验证这一点,您应var_dump() $result查看您从数据库中获取的内容,如下所示:

...
$result = $stmt->fetch(PDO::FETCH_ASSOC);

var_dump($result);
...

在我的情况下打印以下内容:

array(1) { ["Rank"]=> string(1) "7" } 

所以我可以从"Rank"中获取$result

确保你得到类似的东西。

编辑以下答案: 由于您获得的$resultfalse,请尝试获取一些信息,说明您的查询失败的原因如下:

试试这个:

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>";
}