2014-11-06 3 views
0

사용자가 '활성'인지 여부를 확인하는 기능을 프로그래밍합니다.부울이 올바르게 작동하지 않음

function user_active($username) { 
$username = sanitize($username); 
$query = mysqli_query($_POST['x'], "SELECT * FROM users"); 
$row = mysqli_fetch_array($query); 

if ($row['username'] === $username and $row['active'] === 1) { 

    return true; 
    } else { 
    return false; 

      } 
    } 

후 .... 나는 $ 사용자 이름에 대해 테스트하지만 $ 행 [ '활성'] === 1을 포함 할 때 작동이 중지 할 때에만 작동

if (user_active($username) === false) { 
    $errors[] = 'You have not activated your account. Please check your 
    email to activate your account.'; 

. 사용 비교할 때, 데이터 타입이 '==='데이터 유형도 좌측과 우측 사이에 평등 확인 '==='

+0

당신이 $ 행을 덤프 할 수 [ '활성'(위해 var_dump())? –

+0

'$ row [ 'active'] === 1'은'$ row [ 'active']'가 문자열이기 때문에 가능합니다. – Cheery

+1

'$ row [ 'active']'의 데이터 유형은 무엇입니까? 문자열 인 경우 '=== 1'은 작동하지 않습니다. '== 1' 또는'=== '1''을 시도하십시오. –

답변

0

== 사이

차이를 시도하고있다 === 같지 않으면 false를 반환합니다. $x 있는지 확인한다

$x === 1 

의미

function user_active($username) { 
$username = sanitize($username); 
$query = mysqli_query($_POST['x'], "SELECT * FROM users"); 
$row = mysqli_fetch_array($query); 

if ($row['username'] === $username and $row['active'] == 1) { 

    return true; 
    } else { 
    return false; 

      } 
    } 
1

=== 동일한 일치 검사하므로,

값만 평등 1.

== 검사의 값을 갖는 정수이고

$x == 1 

$x은 문자열 또는 정수 또는 부울 true과 같은 다른 값이든간에 값 1을가집니다.

$ A ==의 $의 B : 당신이 당신의 변수가 문자열 알고있는 경우

$row['active'] === '1' 

참조

$row['active'] == 1 

에 문을 변경 시도하거나 .... 동일 .... 저글링 유형 후 $ a가 $ b와 같으면 TRUE입니다.

는 === $으로 B를 .... 동일한를 .... $ $ a가 $ b와 동일하고, 그것들은 같은 유형 TRUE 경우.

http://php.net/manual/en/language.operators.comparison.php

+0

이것을 시도한 다음 테이블의'active' 값을 1에서 0으로 바꾸 었으며 여전히 – Jim

+0

'var_dump ($ row [ 'active'])'에 로그인 할 수있었습니다. 가치와 유형은 무엇입니까? –

+0

값이 1이고 유형이 문자열인데, 심지어 mysql 테이블에서 값을 0으로 변경할 때도 – Jim

관련 문제