考虑一下:
$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'获取值。这样做的正确方法是什么?
答案 0 :(得分:5)
首先,您忘记在查询中添加$ email附近的引号。此外,如果您是从用户那里获取的,那么在将它传递给数据库之前永远不要忘记mysql_real_escape_string
。
此外,由于MySQL不允许使用函数索引,因此您必须了解此查询将要求MySQL读取表的每一行并在每封电子邮件上运行MD5以进行检查。您应该将哈希存储在单独的字段中并在其上添加索引。