0

我想用 4 位随机数更新我的用户数据库。

我似乎在循环的位上卡住了,所以它会给数据库中的每个用户一个不同的随机数。到目前为止,我有这个。

$newpincode = array(sprintf("%04d",mt_rand(0,9999)));

$users_sql = "SELECT * FROM wifi_users";
$result_users = mysql_query($users_sql) or die(mysql_error());
while($row = mysql_fetch_array($result_users)){

foreach ($newpincode as $pin) {

    $sql = "UPDATE wifi_users SET `pincode` = '" . $pin . "' WHERE id = '" . $row['id'] . "'";
    $resultCount = mysql_query($sql) or die(mysql_error());
    $count = mysql_fetch_assoc($resultCount);
    }
}
4

4 回答 4

3

Why not just run a single query:

UPDATE wifi_users SET `pincode` = LPAD(FLOOR(RAND() * 10000), 4, '0')

Note this doesn't guarantee uniqueness, but then again neither does your current code. 4 digits doesn't give you enough values to provide uniqueness anyways if you plan on having more than 10000 users.

于 2013-08-20T16:17:31.683 回答
1

如果您正在为每个用户寻找一个唯一的随机数,请查看:如何使用 PHP 在数据库中生成随机数而不重复?

于 2013-08-20T16:19:06.470 回答
0

问题是所有用户都使用了相同的密码。

此外,您的内部循环理论上会多次更新同一记录,尽管在这种情况下,每条记录只发生一次。

要为每条记录发布新的 pin 码,您必须将 pin 码生成移到外循环并移除内循环。

顺便说一句,考虑使用PDO和准备好的语句。

于 2013-08-20T16:19:09.640 回答
0
$newpincode = rand(0, 9).rand(0, 9).rand(0, 9).rand(0, 9);
于 2013-08-20T16:17:44.597 回答