2013-10-02 54 views
0

我有一個SQL例程編寫,它將用戶的輸入與表中的現有值進行比較。如果該值存在,則輸入旁邊會顯示綠色複選標記。如果沒有,則出現紅色的x。我的SQL語句如下:帶有'變量'<>''或'變量'的PHP/MySQL SELECT語句不是NULL不起作用

 $check = $con->prepare("SELECT count(*) FROM emaillist"); 
     $check->execute(); 
     $result = $check->fetchColumn(); //Get no. of columns 
     $check = $con->prepare("SELECT Username FROM emaillist WHERE Username =                                                        
       '$Name' AND '$Name' <> '' "); 
     $check->execute(); 
     $result = $check->fetchColumn(); //Get exact column 
     if(!$result) { 
       show red x } else { show green check } 

只要有輸入,這工作正常。輸入不匹配時出現紅色x,出現綠色檢查時出現紅色x;但是,如果該字段留空,我不希望顯示任何東西。現在,如果該字段爲空或爲空,則會顯示紅色的x。使用IS NOT NULL也不起作用。我錯過了什麼?

+0

如果$名稱是從用戶輸入來那麼我認爲這將是更好地檢查它的有效性依賴於SQL查詢的,而不是把它在查詢本身。 – Maximus2012

回答

1

嘗試重寫你的邏輯是這樣的:

if ($Name != ''){ 
    $check = $con->prepare("SELECT Username FROM emaillist WHERE Username = '$Name'"); 
    $check->execute(); 
    $result = $check->fetchColumn(); //Get exact column 
    if(!$result) { 
      // show red x 
    } else { 
     // show green check 
    } 
} 
else { 
    // show red here or some other input error message 
} 
2

您只有兩個分支:show red x和show green check。您需要第三個例如

if (!$Name) { 
    //show nothing 
} 
else if (!$result) { 
    //show red x 
} 
else { 
    //show green check 
} 

在一個不相關的音符,它的偉大,你正在使用PDO,但你需要正確參數查詢,以從注射安全。

+0

不用擔心。在投入生產時,我們將使用指定的佔位符。這只是一個原型練習。 ;-) – Chris