2017-10-17 51 views
0

我有一個PHP的形式下面,而不管我在數據庫中,或者一個新的電子郵件地址已輸入電子郵件地址時,反應似乎不是我想要的。任何幫助表示感謝。PHP的MySQL如果記錄存在

$eMailAddress = $_POST['eMailAddress']; 

$sql = sprintf("SELECT eMailAddress FROM Membership WHERE eMailAddress='$eMailAddress' LIMIT 1"); 

$result = mysqli_query($conn, $sql); 

if ($result) { 
    echo "Sorry your email is already in the system"; 
} else { 
    // proceed with inserting record into database 
} 

$row = mysql_fetch_row($result); 
+0

你爲什麼不把你的郵件列設置爲唯一的? – madalinivascu

+0

這是固定到現有的表單。我們已經有幾次與人填寫相同的電子郵件地址的條目。所以我們現在無法將eMailAddress更改爲唯一。 –

+0

您的混合mysqli_ *和mysql_ *功能,這是不可能的 –

回答

3

如果您不介意嘗試此代碼並讓我知道。我已經使用mysqli_準備好的語句對其進行了編碼,這使得SQL注入證明成爲可能。您應該着眼於使用準備好的語句。

使用mysqli預處理語句

$sql = $conn -> prepare("SELECT eMailAddress FROM Membership WHERE eMailAddress=?"); 
$sql -> bind_param("s", $_POST['eMailAddress']); 
$sql -> execute(); 
$rowCounts = $sql -> num_rows(); 

if ($rowCounts > 0){ 
     echo "Sorry your email is already in the system"; 
    }else{ 
     // proceed with inserting record into database 
    } 

$row = $sql -> fetch_assoc(); 

使用PDO預處理語句

$sql = $conn -> prepared("SELECT eMailAddress FROM Membership WHERE eMailAddress=:email"); 
$sql -> bindParam(':email', $_POST['eMailAddress'], PDO:: PARAM_STR); 
$sql -> execute(); 
$rowCounts = $sql -> rowCount(); 

if ($rowCounts > 0){ 
    echo "Sorry your email is already in the system"; 
}else{ 
    // proceed with inserting record into database 
} 

$row = $sql -> fetch(PDO::FETCH_ASSOC); 
+0

嘗試過,但它仍然給了我它說:「與插入記錄到數據庫中進行」的結果。提供有關php表單的更多信息。它基於WordPress作爲模板。不知道WordPress是否會停止一些涉及到sql語句的php函數? –

+0

這意味着代碼的'SQL'部分不查詢表。 – Sand

+0

不要只複製和粘貼代碼,瞭解代碼在做什麼。 –

0

我重寫它遵循它的工作現在。

$sql="SELECT eMailAddress FROM Membership WHERE eMailAddress='$eMailAddress'"; 



if ($result=mysqli_query($conn,$sql)) 
{ 
    // Return the number of rows in result set 
    $rowcount=mysqli_num_rows($result); 

    if ($rowcount > 0) { 

    echo "Your email address is already in our database. Please try again."; 

    } else { 

    // proceed with inserting new row 

    } 

} 
    mysqli_free_result($result); 
相關問題