2011-01-16 5 views
0

私は重複した電子メールアドレスを持っていることから、私が作業しているサイトのユーザを防ぎたいと考えています。これは私が使用している方法である: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ブロックに渡さないのはなぜですか?

+0

実行する前に$ sqlをダンプしてみて、なぜ結果が見つからないのかがわかります – Naatan

+0

'mysql_real_escape_string'を見てください。あなたが早く使い慣れたかったものです。 –

+0

クエリが実際に成功したことを確認しましたか? $ resultは、問題があった場合はboolean FALSEになり、mysql_num_rows呼び出しは失敗し、falseを返すと、型キャストが0になり、 '(0> 0)'になり、ユーザは入ります。 –

答えて

2

これを試してみてください:

SELECT *(SELECTの後にアスタリスクを注意してください)... FROM ..私はあなたが(を除くすべてのレコードを呼び出しているとは思いませんユーザーの1番目のレコード)を実行しています。私は間違っているかもしれませんが、それを何とかしてください。

+0

それはあなたがそれを指摘するときにはっきりと見える:-)。 +1してください。 –

+0

これは確かに愚かな間違いです。ありがとうございました! –

+0

ようこそ)ありがとうございます。 – OldWest

0

あなたはメールで一度もマッチしないようです。したがって

mysql_num_rows($result) == 0 

が常に該当します。

は、あなたのSQLは、右に見えることを確認する

echo $sql 

を試してみてください。あなたはのcreateUser(に正しく$ emlAdを渡すことはできません)

関連する問題