当涉及到单个mySQL脚本时,我遇到了一些问题;具体而言,MySQL总是给我这个错误:MD5重复项mySQL
MySQL Error: Duplicate entry '39835a3f63f222c9bf51d9dd471b90bc' for key 'PRIMARY'
这是很奇怪的原因主要涉及的关键是一个MD5生成基于散列关闭PHP的time()函数,所以不应该有任何的问题。
这是PHP代码插入到表中:
INSERT INTO log
(hailID, timestamp, lat, lng, phone, device, method, serviceType, email, address, languageID, ipaddress)
VALUES
(MD5('" . $time . $data['phone'] . "'),
'$time',
'".$data['lat']."',
'".$data['lng']."',
'".$data['phone']."',
'".$data['device']."',
'".$data['method']."',
'".$data['serviceType']."',
'".$data['email']."',
'".$data['address']."',
'".$data['languageID']."',
'".$_SERVER["REMOTE_ADDR"]."'
$time
在这种情况下,仅仅是从time()
函数保持的值的变量。有趣的是,这个问题不是很频繁,而且似乎是随机的(至少据我所知)。是的,所有数据在进入$data
阵列之前都使用mysqli_escape_string()
进行消毒。我也使用CHECK TABLE
检查了我的表格,也没有出现任何错误。
任何想法?
谢谢
如果有人连续两次点击提交按钮,会发生这种情况。 – andrewsi
你能举一个你的'$ time'变量的例子吗?如果它不是唯一的(即没有给出完整的日期/时间),那么你将每12/24小时碰撞一次。 – kurtzbot
为什么要生成你自己的id,当你可以让mysql通过auto_increment来做,并保证唯一性?一个无符号的bigint可以让你启动2^64个ID。 –