2012-05-29 73 views
0

我想做一個登錄腳本在哪裏數據庫連接我使用PDO MYSQL。這裏是我的代碼:在PDO的MySQL連接pdo的查詢輸出是沒有什麼爲mysql null結果集

$query = "SELECT uid,uname from user where email_address='[email protected]' AND password='".md5('abcacb')."'"; 
    try { 
     $dbh = new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME,DB_USER,DB_PASS); 
     $stmt = $dbh->query($query); 
     $result = $stmt->fetch(PDO::FETCH_ASSOC); 
     if(!$result) 
      $status = FALSE; 
     else 
      $status = TRUE; 
     $dbh = null; 
    } 
    catch(PDOException $e){ 
     echo $e->getMessage(); 
    } 
    print $status; 

email_address & password都是正確$status是印刷1。但是,如果email_addresspassword與數據庫值不匹配,則不會爲$status打印任何內容。我認爲至少它應該打印0。但我沒有得到我錯誤的地方?

回答

1

當EMAIL_ADDRESS &口令都是正確的$狀態打印1. 但如果EMAIL_ADDRESS或密碼是從它的 不打印爲$狀態

任何東西數據庫值不匹配,因爲你是sotring的變量中的布爾值爲$status。布爾值在PHP中具有它自己的行爲。

boolean value true will always print `1` 
boolean value false will print nothing. 

試試這個

echo true; 
//prints 1 

echo false; 
//prints nothing 

,如果你想0要打印,那麼你可以不喜歡這樣。

$status = ($result == true) ? 1 : 0; 

上面的代碼是三元運算符,如果你不知道。在使用條件語句是相同

if($result) 
    $status = 1; 
else 
    $status = 0; 

,1將始終被視爲布爾真,0爲假。

我希望這能回答你的問題。

+0

非常感謝!我不知道這個概念。現在我知道了它的工作正常。 – Sumant

1

這聽起來像你期望打印錯誤的東西 - 嘗試使用print_r或var_dump進行調試打印。