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

単一のクエリを実行しない理由:

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

これは一意性を保証するものではありませんが、現在のコードも同様です。10000 人以上のユーザーを持つことを計画している場合、とにかく 4 桁では一意性を提供するのに十分な値が得られません。

于 2013-08-20T16:17:31.683 に答える