防止在PHP中创建重复的条目

时间:2014-12-15 12:03:41

标签: php mysql arrays while-loop

我想随机创建一些用户ID,但不应该重复/重复。

如果我的目标是将其插入到MySQL数据库中,我想问一下是否有一个好的方法?我不想创建新用户。它是另一张桌子。

我想插入随机用户ID的随机数据来创建用户创建的测试评论条目,但不是我想显示不同的用户。这就是我需要它的原因。它不是关于在主用户表中使用主键自动增量。我想填写评论部分

示例:

user_id:使用PHP(54,34,30函数)生成mt_rand() randomy。现在我有大约1000个用户想要随机化,但是在某些时候它仍然有可能被重复。现在让我们说这些是价值观:54,54,32

这意味着它将在后续步骤中插入相同的用户twiche,其中我在注释表中INSERT此用户ID。 所以我只需要随机生成另一个数字如果已经生成了

2 个答案:

答案 0 :(得分:0)

如果您要添加特定数量的用户,请尝试增加一个数字并将其用作用户名。这样,它们都是独一无二的,你不必在30秒后强行杀死它。这应该是最简单的方法,除非您需要实际的随机(非顺序)ID。

答案 1 :(得分:0)

最好的方法是创建GUID,而不是整数。 PHP具有内置方法来创建这些唯一代码。

如果要插入数据库,我认为最强大的方法是创建主键,并一次插入一个条目。如果您尝试插入重复的ID,则DB调用将会出错,如果您需要,这是检查错误并选择其他ID的适当位置 - 尽管如果您使用GUID,重复的可能性已经可以忽略不计。< / p>

编辑:

因此,如果我理解您正在尝试正确执行的操作,则需要创建一个用户ID随机数组的数组,这些数组是1-1000之间的整数,其中不会重复两个ID。

我假设表演不是一个大问题,因为这听起来像测试/虚拟数据。因此,在我看来,最简单的方法是避免在每个id创建时测试现有的id,并且只是对数组进行洗牌。

因此,从一个1000个数组开始,然后循环x次,对数组进行洗牌,并从数组的开头切掉随机数量的id。这是我测试过的一些代码。它输出我认为你想要创建的东西。

$ids = array();
$commentIds = array();
$numIds = 1000;
$numComments = 10;
for($i=0; $i<$numIds; $i++)
{
    $ids[$i] = $i;
}
for($s=0; $s<$numComments; $s++)
{
    shuffle($ids);
    $num = mt_rand(1,10);
    echo("rand:$num");
    $commentIds[$s] = array_slice($ids,0,$num);
    print_r($commentIds[$s]);
}

这是你的意思吗?