PHP访问系统-或在函数中

PHP访问系统-或在函数中,php,mysql,Php,Mysql,我正在努力使用户访问系统更容易 我有阶级和职能: public static function hasaccess($nid) { self::onlylogged(); if (isset($_SESSION['userid'])) { $sessionid = $_SESSION['userid']; }else{ return FALSE; die(); } global $pdo; $stmt

我正在努力使用户访问系统更容易

我有阶级和职能:

public static function hasaccess($nid)
{
    self::onlylogged();
    if (isset($_SESSION['userid'])) {
        $sessionid = $_SESSION['userid'];
    }else{
        return FALSE;
        die();
    }
    global $pdo;
    $stmt = $pdo->prepare('SELECT `access` FROM `users` WHERE `id` = :userid LIMIT 1');
    $stmt->bindValue( ':userid', $sessionid);   
    $stmt->execute();
    #return $stmt;
    #$accesarray[];
    if($stmt->rowCount() > 0 && !empty($stmt)){
        $key = $stmt->fetch(PDO::FETCH_ASSOC);
        $aid = explode(';', $key['access']);
        $aid = array_filter($aid);

        if (in_array($nid, $aid)) {
            return TRUE;
        }else
        {
            return FALSE;
        }


    }
    else{ 
        return FALSE;
    }
}
在mysql中,用户访问保存为:5;7;8;9 我在代码中使用以下内容:

if (user::hasaccess('1' || '7')) {
    echo "yes";
}
else
{
    echo "not";
}
问题是当用户只能访问“7”而不能访问“1”时。
脚本不返回。

类的参数为
'1'| |'7'
,其计算结果为
true
。在PHP术语中,该值为
1
,因此
'1'
成功,而
'7'
将失败。您需要对方法进行两次调用,每个值调用一次

或者,更改您的方法,使其能够处理您尝试进行的查询类型。无论哪种情况,您都需要更改参数。

更改此项:

if (user::hasaccess('1' || '7')) {
   echo "yes";
}
为此:

if ( user::hasaccess('1') || user::hasaccess('7') ) {
   echo "yes";
}

问题是什么?