2014-04-17 3 views
0

이전 로그인 스크립트를 mysql_query에서 pdo로 변환 중입니다. 다소 어려움을 겪고 있습니다.pdo 문 결과가 항상 true를 반환하는 이유는 무엇입니까?

이메일에서 데이터베이스를 찾을 수 있습니까?

public function doesEmailExist($userEmail) 
{ 

    $db = new PDO('mysql:host=localhost;dbname=servershop', 'user', 'pass'); 
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $stmt = $db->prepare("SELECT COUNT(`uid`) FROM `user` WHERE `email`= ?"); 
    $stmt->bindValue(1, $userEmail); 

    try 
    { 

     $stmt->execute(); 
     $rows = $stmt->fetchColumn(); 

     if($rows == 1) 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 

    } 
    catch (PDOException $e) 
    { 
     die($e->getMessage()); 
    } 
} 

에 관계없이 이메일이 테이블에 존재하는지의 여부를 내 코드, 코드는 항상 true를 반환?

SQL에서 count_rows와 같은 간단한 방법은 없습니까?

+1

'var_dump ($ rows)'를 사용해 보았습니까? –

+0

새 코드와 비교하기 위해 이전 ** 작업 ** MySQL 코드를 게시 할 수 있습니까? –

+0

@Niet string '0'(length = 1) – dave

답변

1

변경이 :

$rows = (int) $stmt->fetchColumn(); 

그리고 그것은 작동합니다.

+1

'C : \ Users \ Niet> php -r "var_dump ('0'== 1);"'bool (false)'를 출력합니다. - "0 '== 1 일 경우 사실 일 것입니다." –

+0

네 말이 맞아. 대답 편집 –

+0

@Henrique, 연설에 관계없이, 실제 답변은 매력처럼 작동합니다 :-) – dave

관련 문제