是不是需要使用rand生成一个随机数,然后去数据库查询是否有这个数呢?感觉这样的话有点费时间,有没有其他方法呢?
设定一个取号范围,然后全部放入数据库。
每发出一个id就在数据库里面将这个号标记为「已使用」。
发号的时候随机一个没被标记成「已使用」的id,然后返回那个id。
这个问题已经有现成的解决方法了,使用php uuid扩展就能完美解决这个问题,这个扩展能生成唯一的完全数字签名。。如果你不使用composer请参考https://github.com/lootils/uuid,如果你的项目是基于composer搭建的,那么请参考https://github.com/ramsey/uuid
1 回答4.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答2.3k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答728 阅读✓ 已解决
2 回答2.3k 阅读
1 回答689 阅读✓ 已解决
有两种方法可以解决。
1. 如果你只用php而不用数据库的话,那
时间戳+随机数
是最好的方法,且不重复;2. 如果需要使用数据库,即你还需要给这个id关联一些其他的数据。那就给MySQL数据库中的表的id一个AUTO_INCREMENT(自增)属性,每次插入一条数据时,id自动+1,然后使用
mysql_insert_id()
或LAST_INSERT_ID()
返回这个自增后的id。