PHP如何生成不重复的订单号,而且新生成的大于系统已有的?

mia0x75 发布于 2015/05/16 23:26
阅读 3K+
收藏 0
PHP

现在是这样:

$s->id = date('Ymd').substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8);

存在的问题就是新生成的可能比已有的小。希望单号不要太长。谢谢。

加载中
1
呵大官人
呵大官人

用年,月,日,时,分,秒,毫秒,微秒,进程id来做,这样不会重复,并且新的比现有的大.

然后转换为16进制,比你现在定单号多2位,18个字符

$tm = explode(' ', microtime());
$id = sprintf("%x%06x%04x", $tm[1], substr($tm[0], 2, 6), getmypid() & 0xffff);

0
甘薯
甘薯

选择在保存的时候才生成唯一单号的路过...


0
梦想岛
梦想岛

如果是mysql,为何不用数据库的自动增长值 ;或者

SELECT UUID();

SELECT UUID_SHORT();

小炎菌
拆表的时候很忧伤
0
大王叫我来卖萌
大王叫我来卖萌
mssql或oracle的sequence, mysql自己写存储过程或用代码生成
返回顶部
顶部