2015-10-24 1 views
0

У меня есть небольшой скрипт для проверки базы данных для значения 0 или 1, но я не могу заставить его работать, я пробовал подсчет строк, но имею ту же проблему.User Active Check

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-тега, например '

+0

У меня нет, я просто не думал, что мне нужно добавить всю страницу. –

ответ

1

вопрос здесь:

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

Вы получаете ассоциативный массив обратно из fetch, и сравнив его с 0 на следующей строке. Вместо этого, вы хотите проверить значение для столбца выбранного вами в запросе, и сравните с этим:

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

Спасибо, что получил. –

Смежные вопросы