當涉及到單個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。 –