2015-10-24 91 views
0

我有一个小脚本来检查值为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

+2

尝试'如果($ userRow [“activedd”] ==“0”){'。你正在用'0'与你当前的代码比较一个关联数组。 – andrewsi

+0

在打开PHP标记后立即在文件顶部添加错误报告,例如'<?php error_reporting(E_ALL); ini_set('display_errors',1); '然后你的代码的其余部分,看看它是否产生任何东西。 –

+0

我有,它不,我不认为我需要添加整个页面。 –

回答

1

问题就在这里:

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

你得到一个关联数组从回fetch,并将它与下一行的0进行比较。相反,你要检查你在查询所选择的列中的值,并比较与:

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

感谢这一点。 –