2012-01-06 15 views
2

はこれを考えてみましょうどこにMD5を使用して電子メールを選択します。PHP MySQLはWHERE句

$email = 'c5dfd29d956b52c1ffa00ce4a06abad2'; // From the query string (MD5) 

$result = mysql_query('SELECT * FROM ' . $table 
      . ' WHERE MD5(email_address) = ' . $email); 

$row = mysql_fetch_array($result); 
echo $row['email_address']; 

私はハッシュされた電子メールを使用して、データベースから、クエリ文字列から(同じであれば、「email_column」から値を取得したいですMD5)。これを行う正しい方法は何ですか?

+0

電子メールを作成する代わりに、認証のためにテーブルに別のキーを使用するmd5 – Dau

+0

提供されているコードが正しく表示されます(本当にすべきではないmysql_ *機能を使用していること以外は、mysqliまたはpdoを使用してください)。 – GordonM

+0

第1回:本当に必要な 'SELECT'の行のみを返します。第2回:スカラー関数内でインデックスを付けるべきでない列を決してラップしません。MySQLはインデックスを使用しません。どうしたの? – rabudde

答えて

5

まず、質問に$ emailの周りに引用符を追加するのを忘れてしまった。また、あなたがそれをユーザーから取っている場合は、mysql_real_escape_stringをDBに渡す前にそれをすることを決して忘れないでください。

また、MySQLは関数インデックスを許可しないため、このクエリではテーブルのすべての行を読み込み、チェックするすべての電子メールでMD5を実行する必要があることを理解する必要があります。むしろ別のフィールドにハッシュを格納し、それにインデックスを付けるべきです。