PHP Mysql在where子句中使用MD5选择电子邮件

时间:2012-01-06 07:24:13

标签: php mysql

考虑一下:

$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'];

如果散列的电子邮件相同(从数据库和使用MD5的查询字符串),我想从'email_column'获取值。这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:5)

首先,您忘记在查询中添加$ email附近的引号。此外,如果您是从用户那里获取的,那么在将它传递给数据库之前永远不要忘记mysql_real_escape_string

此外,由于MySQL不允许使用函数索引,因此您必须了解此查询将要求MySQL读取表的每一行并在每封电子邮件上运行MD5以进行检查。您应该将哈希存储在单独的字段中并在其上添加索引。