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

标签 php mysql database localhost local

最近,我一直在研究我的登录系统。在我尝试给予我的客户人员特权之前,一切进展顺利。因此,我在成员(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”

确保您得到类似的东西。

编辑以下答案: 由于您获得的 $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>";
}

关于php - 从数据库获取 int,如果 int = 特定值,则执行某些操作。如果不做别的事,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41786085/

相关文章:

mysql - CodeIgniter - ses_destroy() 使用大量 CPU

java - GWT - 更新面板中的表

java - Play Framework : JDBC connection vs JDBC datasource

Php max_execution_time 被忽略

php - 对子查询的别名使用 where 条件

mysql - 创建 MySQL 和 SQLServer 兼容对象

node.js - 我应该让 Sequelize 模型和迁移保持同步吗?

php - Android + 网站/服务器上的 Facebook 身份验证

php - symfony2 FOSElasticaBundle:当Elasticsearch服务关闭时,如何推迟文档更新?

mysql - SQL根据列值插入行?