用户主动检查

时间:2015-10-24 15:18:29

标签: php mysql pdo

我有一个小脚本来检查数据库的值为0或1,但我似乎无法使其正常工作,我尝试了行计数,但遇到了同样的问题。

public function is_active($id){
    $stmt = $this->db->prepare("SELECT activedd FROM users WHERE id=:id LIMIT 1");
    $stmt->execute(array(':id'=>$id));
    $userRow=$stmt->fetch(PDO::FETCH_ASSOC); 
    if($userRow == '0'){
        return true;
    }else{
        return false;
    }
}

然后在所有页面上调用该函数

$id = $_SESSION['session'];

if(!$user->is_active($id)){
    $user->redirect('../users/inactive.php');
}

更改单元格中的值没有区别,我只通过更改

获得不同的结果

$id = $_SESSION['session']; if(!$user->is_active($id)){ $user->redirect('../users/inactive.php'); }

$id = $_SESSION['session']; if($user->is_active($id)){ $user->redirect('../users/inactive.php'); }

但即便如此,我也遇到了同样的问题,但事实恰恰相反。我在$userRow == 0时尝试将用户重定向到非活动页面,并允许他们继续使用该网站(如果为1)。

1 个答案:

答案 0 :(得分:1)

问题在于:

$userRow=$stmt->fetch(PDO::FETCH_ASSOC); 
if($userRow == '0'){

您从fetch返回一个关联数组,并将其与下一行的0进行比较。相反,您要检查您在查询中选择的列的值,并与之进行比较:

$userRow=$stmt->fetch(PDO::FETCH_ASSOC); 
if($userRow['activedd'] == '0'){