我使用md5與隨機代碼,當前日期時間和customer_id生成哈希碼,但在運行200,000條記錄後,我發現有很多重複的記錄。我如何避免重複?MD5隨機生成代碼重複
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
$curr_date = date('Y-m-d H:i:s');
$hash = md5(rand(0,100000)+strtotime(date('curr_date'))+$row[0]);
echo $query = "update customers set email_hash='$hash' where customer_id='$row[0]'";
mysql_query($query) or die(mysql_error());
}
哈希值不是唯一的,所以請考慮其他可避免重複問題的東西。 –
沒有「重複」的「隨機」概念沒有意義。雖然您可以通過更少的碰撞獲得更好的隨機分佈,但仍需要考慮這些碰撞。如果分佈是好的,你可能會輕易地重複哈希生成和更新罕見的碰撞。 (還要考慮SQL語句中的MD5(RAND())。) – danorton