2013-05-27 50 views
0

我正在嘗試檢查表單中提交的重複電子郵件。使用php檢查重複的電子郵件條目

我的PHP看起來像這樣

$value = $_POST['name']; 
$value2 = $_POST['email']; 
$value3 = $_POST['address']; 
$value4 = $_POST['city']; 
$value5 = $_POST['state']; 
$value6 = $_POST['zip']; 
$value7 = $_POST['primary']; 
$value8 = $_POST['secondary']; 

$sql = "INSERT INTO fusiodoseOne (`name`, `email`, `address`, `city`, `state`, `zip`, `primary`, `secondary`) VALUES ('$value', '$value2', '$value3', '$value4', '$value5', '$value6', '$value7', '$value8')"; 

if(!mysql_query($sql)){ 
    die('Error : ' . mysql_error()); 
} 

// 

function createUser($email){ 
    $sql = "SELECT count(email) FROM fusiodoseOne WHERE email='$value2'" ; 

    $result = mysql_result(mysql_query($sql),0) ; 

    if($result > 0){ 
    die("There is already a user with that email!") ; 
    }//end if 

我在做什麼錯。重複的電子郵件條目仍通過

了jQuery看起來會像這樣

$.post("demo.php",$(this).serialize(),function(data){  
     $('.successMessageHolder').show(); 
     $('.alertMsg').hide(); 
    }); 
+1

您將'$ email'傳遞到您的createUser函數中,但在查詢中使用'$ value2'。 – andrewsi

+4

在防止重複的電子郵件之前,我會學習如何防止SQL注入,也可以考慮使用mysqli或PDO代替mysql函數。 – user2406160

+0

測試您的查詢的輸出,看看它是否正確[http://sqlfiddle.com/](http://sqlfiddle.com/) – djthoms

回答

0

我沒有得到的createUser()函數。

首先:您將$ email作爲參數傳遞,但不要使用它,即您使用的是$ value2,而不是全局範圍,除非您將其作爲參數傳遞,否則無法訪問它($ email in你的情況)或者在函數體中聲明全局。看起來應該是:

function createUser($email){ 
    $sql = "SELECT count(email) FROM fusiodoseOne WHERE email='$email'" ; 

    $result = mysql_result(mysql_query($sql),0) ; 

    if($result > 0){ 
    die("There is already a user with that email!") ; 
    }//end if 

第二:在什麼時候該函數被調用?這是一個定義,但它在哪裏以及如何使用?