2013-10-17 37 views
0

好吧,我很困難在這裏,我可能會看到這完全錯誤(還是一種新手)或超接近只是缺少小東西我不能告訴。PHP如果其他不工作就像我認爲它會

在這裏的底部,你會發現我的代碼與If ElseIf Else語句。我只是無法做我想做的事。所以我希望有人能幫助我指引正確的方向。

如果它檢查以確保輸入的promocode在數據庫中並且該部分有效。

關於elseif我希望它查看數據庫並找到promocode並確認沒有與該promocode關聯的電子郵件地址。當查詢中的IS NOT NULL適用於在該promocode中存在電子郵件地址的情況下,但當該promocode沒有任何內容時,它仍然表示存在並提供了今天的提交數據,但我可以確保數據庫中沒有任何東西。

這是我的問題所在我在做這個完全錯誤的是有沒有更好的方法來完成我在這裏要做的事情?或者我只是忽略了一些小事?

 $promosql = "SELECT * FROM formdata WHERE (promoCode = '$varPromo')"; 
     $promoraw = $mysqli->query($promosql); 

     $dupesql = "SELECT * FROM formdata WHERE (promoCode = '$varPromo' AND email IS NOT NULL)"; 
     $duperaw = $mysqli->query($dupesql); 

     if($promoraw->num_rows <> 1) { 
      //echo ("$varName already exists in $varAddress \n"); 
      $promo .= "$varPromo is not a valid promocode \n"; 
     } 
     elseif($duperaw->num_rows > 0) { 
      //echo ("$varName already exists in $varAddress \n"); 
      $dupe .= "$varPromo has already been used on $varDate \n"; 
     } 
     else { 
     $sql = "INSERT INTO formdata (promoCode, name, email, address, city, state, zip, submitDate) VALUES (". 
         PrepSQL($varPromo) . ", " . 
         PrepSQL($varName) . ", " . 
         PrepSQL($varEmail) . ", " . 
         PrepSQL($varAddress) . ", " . 
         PrepSQL($varCity) . ", " . 
         PrepSQL($varState) . ", " . 
         PrepSQL($varZip) . ", " . 
         PrepSQL($varDate) . ")"; 
     $mysqli->query($sql); 

     header("location: index.php?success=1"); 
     exit(); 
     } 
+0

使用參數化查詢,而不是字符串連接。 – rightfold

+0

'if($ promoraw-> num_rows <> 1)'應該是'if($ promoraw-> num_rows!= 1)'。 行elseif($ duperaw-> num_rows> 0)'應該是'else if($ duperaw-> num_rows> 0)'。 –

+3

@DissidentRage其實,elseif是正確的。 – markus

回答

0

嘗試此查詢:

SELECT email IS NULL or email = '' has_email FROM formdata WHERE promoCode = '$varPromo' 

那麼你的PHP可以這樣做:

if ($promoraw->nul_rows == 0) { 
    // Not a valid promo code 
} else { 
    $row = $promoraw->fetch_assoc(); 
    if ($row['has_email']) { 
     // Promo code has been used 
    } else { 
     // Insert into table 
    } 
}