我在互联网上有一项服务,人们发布图片并生成一个短字符串。只有一个可以使用。但是,我在数据库中遇到重复,我看到了重大问题。
以下是我正在使用的内容:
$id=rand(10000,99999);
$short_string = base_convert($id,20,36);
解决问题的最佳方法是什么?从数据库检查并保持循环直到它不匹配?如果每个可能的解决方案都进入无限循环会怎么样?
答案 0 :(得分:1)
将PK放入一个算法,该算法从中生成一个唯一的数字并将其放入您的函数中。
答案 1 :(得分:1)
最好的办法是在写入包含该数字的新图像之前,先使用随机数生成器对图像列表确保图像不存在。
尝试使用使用数字,字母的算法来增加字符的数量和类型,以便增加您可以拥有的组合。
答案 2 :(得分:1)
将最后一个值增加一个随机数,而不是使用随机值。像这样:
$results = mysql_query("SELECT * FROM thetable ORDER BY theId DESC LIMIT 1");
$keyToUse = 1;
if($row = mysql_fetch_array($results)) {
$keyToUse = (int)$row['theId'] + rand(1, 100);
}
然后将整数键转换为任何格式,例如使用base_convert
。
答案 3 :(得分:1)
您是否尝试使用mt_rand()
http://www.php.net/manual/en/function.mt-rand.php。你也应该增加范围。
答案 4 :(得分:0)
使用md5 http://php.net/manual/en/function.md5.php 产生的字符串没有冲突(概率很大)。