while ($row = mysqli_fetch_array($aa)){
$public_order_id = date('Ymd', time()).rand(1,999999);
因為在一瞬間會產生不止一筆我目前很白痴的做法是用 rand.....但是1,999999 還是有機率重複,因為是用 while 產生訂單!所以搞不好第一筆是產生222,第二十筆也會有 222 的機率!因為使用 time() 沒有用,時間會完全一模一樣,速度太快了除非產生的訂單超過20筆,時間搓個位數可能才會+1而且還要跟數據庫比對,如果有重複則回到上一步驟重新產生?我有一個ID是給程式看的,所以用 AUTO_INCREMENT但現在產生的是要給人看的想問一下更好的方式???
3 回答

偶然的你
TA贡献1841条经验 获得超3个赞
1: uuid
2:使用更小的微秒
// 生成一万个
for ($i = 0; $i < 10000; ++ $
do {
$time = str_replace('.', '', microtime(true));
// 这样子重复的概率已经比较小了,如果还怕重复,只能手动筛选了
$key = $time . str_pad(1, 9999, STR_PAD_LEFT);
// 可以装进数组判断,但注意内存
if (不存在) {
// 存起来
break;
}
// 不存在 继续循环
} while(true);
}
- 3 回答
- 0 关注
- 364 浏览
添加回答
举报
0/150
提交
取消