随机地从列表中将数据插入/更新到数据库

时间:2017-10-03 18:08:26

标签: php mysql arrays

所以我有一个名为users的表。 在这里是名为work的列,当前所有用户都是空的。我已经制作了一个包含许多职称的列表,现在我希望将其添加到工作栏下的users表中。

我想我会用这样的数组做点什么:

$input = array("worktitle1", "worktitle2", "worktitle3");
$rand_keys = array_rand($input, 1);

然后在一个简单的查询中更新rand_keys:

$mysqli->query('UPDATE users SET work = '.$rand_keys.'');

然而,当我这样做时,只插入了一个数字值,并且对于我在数据库中没有的所有xx用户来说它是相同的。

如何修复以便为每一行插入一个随机的工作标题?并不是每个用户都有相同的工作标题。我想在查询中执行rand(),但我不确定这是否有效

奖金问题:如果我希望我的array_rand优先考虑一些工作标题(因此在数据库中,特定的工作标题将显示比其他工作标题多10%的次数),我该怎么做?

2 个答案:

答案 0 :(得分:0)

我假设您有 for 循环或或某些要循环的数组并将虚拟数据插入数据库表。

我认为是因为您在for循环之前使用了array_rand,然后使用插入到之前的随机密钥的数据库中

例如:

<?php
$input = array("worktitle1", "worktitle2", "worktitle3");

foreach($somearry as $key => $values){
//Now you need to call the array_rand function
$randomKey = array_rand($input, 1); //This will return only the random key of the array

$randomWork = $input[$randomKey]; //This line will give you the random key value of the input array

//Now write your code *here* to insert this random value ie update query
}

根据您的要求使用 while 循环

while(some_condition){
//Now you need to call the array_rand function
    $randomKey = array_rand($input, 1); //This will return only the random key of the array

    $randomWork = $input[$randomKey]; //This line will give you the random key value of the input array

    //Now write your code *here* to insert this random value ie update query
}

即使你可以采用以下硬编码方式。

  

注意:这只是为了向用户演示以便这样做   他能正确理解。

for($i = 0; $i < 10; $i++){
//Now you need to call the array_rand function
    $randomKey = array_rand($input, 1); //This will return only the random key of the array

    $randomWork = $input[$randomKey]; //This line will give you the random key value of the input array

    //Now write your code *here* to insert this random value ie update query

 $mysqli->query("UPDATE users SET work = '$randomWork'");
}

答案 1 :(得分:0)

如上所述,您的代码随机选择一个标题,然后使用该标题更新所有行,这就是我想你所说的。您需要遍历所有用户,选择标题,然后设置标题&#34; WHERE userid =&#39; xxx&#39;&#34;或其他一些选择特定用户的方式。

加权随机性。带上一系列标题,并为您想要加权的标题添加额外的条目。如果&#34; CEO&#34;使用的可能性要高10%,确保阵列中有10个&#34; CEO&#34;的条目。