2015-01-08 4 views
-1

나는 postgred db를 가지고 있으며 테이블에서 특정 문자열 값을 가져 와서 해당 문자열이 있는지 확인하기 위해 조건을 수행하려고합니다. 이건 내 코드입니다 : 내가 할PDO를 사용하여 문자열을 가져 오는 방법

function tipo_utilizador($username, $password) { 

    global $conn; 
    $user = $conn->prepare("SELECT type 
          FROM utilizador2 
          WHERE name = :username AND password = :password"); 
    $user->bindParam(':username', $username); 
    $user->bindParam(':password', $password); 
    $user->execute(); 

    return $user->fetch(); 

} 

그리고 다음의 경우 상태와 같은 :

$some_variable = 0; 
$var = tipo_utilizador($username, $password); 

if($var == "admin") { 
    $some_variable=1; 
} 

echo $some_variable; 

하지만 $some_variable 에코 때, 항상 0으로 SQL 코드가 잘 작동 반환하고 사용자 이름과 암호 에코도 괜찮습니다. 오류가 함수 내부에있는 것 같지만 무엇인지 알 수 없습니다. 누군가 나를 도울 수 있습니까?

+3

는'인 print_r ($ var에)를 수행,'당신은 – Rizier123

+1

'볼 -'배열이 아닌 열을 반환) (> 페치. 사용자 이름별로 쿼리하고 password_hash/verify로 전환 할 수도 있습니다. – mario

답변

3

같은 것을 필요 :

$var=tipo_utilizador($username, $password); 

if($var=="admin") 

함수가 배열을 반환합니다, 그래서 당신은 그 배열에서 올바른 요소를 얻을해야합니다

if ($var['type'] === "admin") 
1

fetch 메서드는 단일 문자열이 아닌 필드를 키로 사용하여 배열을 반환합니다. 당신이 잘못이

$var=tipo_utilizador($username, $password); 

if($var['type'] == "admin") { 
    $some_variable = 1; 
} 
1

수행 할 경우 :

print_r($var); 

왜 작동하지 않는지 알 수 있습니다! 그것은 배열, 그래서 이것을 사용하기 때문에 :

if ($var['type'] == "admin") 
관련 문제