我試圖阻止用戶在我工作的網站上有重複的電子郵件地址。這是我使用的方法:PHP/MYSQL重複的電子郵件地址
function createUser($emlAd)
{
$sql = "SELECT FROM Users WHERE email='$emlAd'" ;
$result = mysql_query($sql) ;
if(mysql_num_rows($result) > 0)
{
die("There is already a user with that email!") ;
}//end if
//rest of function
}//end createUser
此代碼不能完成任務,用戶仍然能夠與已經使用電子郵件創建一個帳戶。奇怪的是,當我將if條件更改爲:
mysql_num_rows($result) == 0
用戶無法使用任何電子郵件地址創建帳戶。爲什麼當行數大於0時,代碼不會將控制權傳遞給if塊?
嘗試在執行前傾銷$ sql,看看它是否給你一個更好的線索,爲什麼它找不到任何結果 – Naatan
請務必查看'mysql_real_escape_string'。這是你很想習慣早期使用的東西。 –
您是否檢查過查詢實際上已經成功?如果出現問題,$ result將爲boolean FALSE,並且mysql_num_rows調用將失敗,並且返回false,這將導致類型轉換爲0,這會導致一個'(0> 0)'檢查,並且用戶進入。 –