2014-09-30 43 views
-1

所以我有一個簡單的時事通訊註冊表單。我可以將用戶添加到數據庫中,但我想要解釋重複的電子郵件。這就是我現在所擁有的。測試Mysql數據庫中的重複項?

$result = mysql_query("SELECT * FROM Users WHERE Email='$email'"); 


    $num_rows = mysql_num_rows($result); 


    if($num_rows){ 
    echo "You've already registered! Thanks anyway"; 
    } 

    else{ 

    mysqli_query($db_connection, "INSERT INTO Users (Name, Email) VALUES('$name' , '$email')"); 
    echo "Thanks for signing up, $name."; 
    } 

當我點擊提交,它會將它添加到數據庫,無論電子郵件是否相同。

獲取$ result的mysql_query很好。但是,由於某些原因,if語句不會被調用。任何想法爲什麼?

+1

這是因爲你在混合MySQL API,所以你的第二個查詢將會被執行,加上這個'if($ num_rows)'應該是'if($ num_rows> 0)' – 2014-09-30 22:17:27

+2

可能會更好的強制執行這個數據庫方面。在表中使電子郵件唯一。 – Andreas 2014-09-30 22:20:07

回答

4

「的那個得到$結果的mysql_query是罰款」

你的數據庫連接聽起來是mysql_ - 你正在使用低於mysqli_功能。

專門使用mysqli_並且不要混合它們,它們沒有。


旁註:你的問題是混亂的。

您聲明:當我點擊提交時,它會將它添加到數據庫,無論電子郵件是否相同。 - 然後你說mysql_query得到$result是好的。


此:if($num_rows)應該是if($num_rows >0)

使用此爲您的數據庫連接:

$db_connection = mysqli_connect("your_host","user","password","your_db"); 

if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

然後做:

$result = mysqli_query($db_connection, "SELECT * FROM Users WHERE Email='$email'"); 

$num_rows = mysqli_num_rows($result); 

if($num_rows >0){ 
echo "You've already registered! Thanks anyway"; 
exit; 
} 

else{ 

mysqli_query($db_connection, "INSERT INTO Users (Name, Email) VALUES('$name' , '$email')"); 
echo "Thanks for signing up, $name."; 
} 

警告


腳註:

如果你想避免重複,設置您的列(S)爲UNIQUE