2016-06-10 119 views
-3

我不太清楚我在這裏錯過了什麼。if if else else does not work php

while($row = $result->fetch_assoc()) 
    { 
     // Makes sure input from uid matches database entry 
     if($user == $row['first']) 
     { 
      if($pass == $row['password']) 
      { 
       echo "Logged in"; 
       include "cookie.php"; 
      } 
      else 
      { 
       echo "Failed login"; 
      } 
     } 
     else 
     { 
      echo "Failed login"; 
     } 
    } 

這,我相信,問題在哪裏,雖然我不能真正地告訴問題是什麼。它是爲了在用戶名($ user)錯誤時給出失敗的登錄消息。當兩者中的任何一個不正確時,我希望頁面顯示消息。它在密碼錯誤時反應很好,但如果它的用戶名不正確,則什麼都不會發生。

+0

'而($行= $ result-> FETCH_ASSOC())'---循環體評估,如果有1個或更多的行找到。推測當登錄名錯誤時找到0行。不是說你根本就不需要循環。 – zerkms

+1

您是提取所有查詢還是隻提取一個用戶? – Rizier123

+0

我只提取一個用戶,取其中一個「喜歡」輸入的用戶名稱 – billybonkerybob

回答

2

爲什麼你要使登錄過程如此複雜。當一個簡單的SQL查詢可以這樣做:

SELECT * FROM your_table where first = $user AND password = $pass 

你甚至都不需要獲取的記錄,你可以指望&,會做。

這樣,假設您在表格中的first列上有唯一,如果匹配(認證成功),則只會獲得1行,如果不匹配(認證失敗),則只會獲得1行。 if/else條件塊不需要循環&。

+0

謝謝你的提示,我被教導按照我的方式去做,但你的方式更好,所以謝謝 – billybonkerybob

-1

您可能需要指定,像這樣一個默認的消息:

$message = "Failed login"; 
while($row = $result->fetch_assoc()){ 
    // Makes sure input from uid matches database entry 
    if($user == $row['first']) { 
     if($pass == $row['password']) { 
      $message = "Logged in"; 
      include "cookie.php"; 
     }else{ 
      $message = "Failed login"; 
     } 
    }else{ 
     $message  = "Failed login"; 
    } 
    echo $message; 
} 
+0

我試過讓這項工作,但還沒有能夠,謝謝你 – billybonkerybob