陷入MYSQL mysqli fetch行

时间:2014-12-19 18:24:47

标签: php mysql

在我的mysql数据库表users中,有一个字段grpID,其值为G00, G01, G02, G03

我要做的是检查用户的grpID,以决定他/她是否有权访问某些页面。

所以这就是我的尝试:

$isadmin = false;
function evalLoggedUser($conx,$id,$u,$p){
    $sql = "SELECT grpID FROM users WHERE userID='$id' AND userName='$u' AND userPW='$p' LIMIT 1";
    $query = mysqli_query($conx, $sql);
    $numrows = mysqli_num_rows($query);
    if($numrows > 0){
        $userLvl = mysqli_fetch_row($query);
        if ($userLvl[0]=="G00") {
            echo "isadmin set to true CONFIRM";
            $isadmin=true;
        }
        return true;
    }

我有一个包含上述代码check_status.php

的文件

在我的index.php我有这段代码:

include_once("htconfig/check_status.php");
if($isadmin) {
echo "final confirmation";
}

现在好了,当我以grpID G00的用户身份进行测试时,我确实得到了第一个回声isadmin set to true CONFIRM。这证明isadmin设置为true,但我没有在if子句中获得第二个echo ... 几个小时我一直在努力...请帮助!

2 个答案:

答案 0 :(得分:1)

在您需要添加的功能中:

$isadmin = false;
function evalLoggedUser($conx,$id,$u,$p){
    global $isadmin;

答案 1 :(得分:1)

可变范围:

$isadmin = false; // global scope
function evalLoggedUser(...) {
   ...
   $isadmin = true; // function LOCAL scope.
}

您正在为完全不同的变量设置true。你想要这个:

function evalLoggedUser(...) {
   global $isadmin; // make the local $isadmin point at the global version
   $isadmin = true;  // set the global variable's value.
}