簡體   English   中英

向數據庫內的所有用戶提供4位隨機碼

[英]Giving a 4 Digit Random Code to all users within Database

我想用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);
    }
}

為什么不只運行一個查詢:

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

請注意,這不能保證唯一性,但是您當前的代碼也不能保證唯一性。 如果您打算擁有10000個以上的用戶,則4位數字不能給您足夠的值來提供唯一性。

如果您正在為每個用戶尋找唯一的隨機數,請查看以下內容: 如何使用PHP在數據庫中不重復地生成隨機數?

$newpincode = rand(0, 9).rand(0, 9).rand(0, 9).rand(0, 9);

問題是向所有用戶提供了相同的密碼。

此外,理論上,您的內部循環會多次更新同一條記錄,盡管在這種情況下,每條記錄只會發生一次。

要為每個記錄發布新的個人識別碼,您必須在外部循環移動個人識別碼生成並刪除內部循環。

順便說一句 ,請考慮使用PDO和准備好的語句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM