私は重複した電子メールアドレスを持っていることから、私が作業しているサイトのユーザを防ぎたいと考えています。これは私が使用している方法である: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
は、このコードは、そのタスクを達成しないと、ユーザーが既に使用される電子メールでアカウントを作成することができます。
mysql_num_rows($result) == 0
ユーザーは任意のメールアドレスでアカウントを作成することができません:奇妙なことは、私があれば条件を変更したときということです。行の数が0より大きい場合に、コードが制御をifブロックに渡さないのはなぜですか?
実行する前に$ sqlをダンプしてみて、なぜ結果が見つからないのかがわかります – Naatan
'mysql_real_escape_string'を見てください。あなたが早く使い慣れたかったものです。 –
クエリが実際に成功したことを確認しましたか? $ resultは、問題があった場合はboolean FALSEになり、mysql_num_rows呼び出しは失敗し、falseを返すと、型キャストが0になり、 '(0> 0)'になり、ユーザは入ります。 –