2014-04-17 186 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);」'prints'bool(false)'' - 我反駁你的說法,「如果你這樣做'0'== 1它將是真實的」 –

+0

是的,你是對的。編輯答案 –

+0

@亨利克,無論是哪種系統,你的實際答案都像一個魅力:-) – dave

相關問題