你好,所以首先請考慮這個問題作爲一個新手,因爲我可以設置一個ID字段,並添加zerofill,所以它看起來像000001,000002等堡壘。但是我做的是錯誤的,系統已經很大,請考慮我的問題。我有一個名爲accounts的表,其中有id
字段和sponsorID
字段。現在我所做的看起來是這樣的(順便說一句,我用纖細的框架):PHP PDO獨特的隨機數發生器
$db = new db();
$sponsorIDrandom = mt_rand(100000, 999999);
$bindCheck = array(
":sponsorID" => $sponsorIDrandom
);
$sponsorIDChecker = $db->select("accounts", "sponsorID = :sponsorID", $bindCheck);
$generate_SID = null;
do {
$generate_SID = mt_rand(100000, 999999);
} while (in_array($generate_SID, array_column($sponsorIDChecker, 'sponsorID')));
$db->insert("accounts", array(
"sponsorID" => $generate_SID
));
上面的代碼將檢查一些賬目表中已經存在,如果有一個現有的,它會產生一個隨機數再次直到它在帳戶表中變得唯一或不存在。我製作了sponsorID
字段unique
,以便它不會接受重複的值。
現在的問題是我發佈的代碼。我認爲它會讓$generate_SID
是唯一的,因爲我使用了in_array
函數,因此它將檢查數組中是否已經存在一個值,並且再次生成一個數字,直到它是唯一的,但是我確實收到了它嘗試插入一個錯誤隨機數已經存在,並且沒有產生新的數字。
任何人都可以告訴我,如果有解決方案嗎?或者我應該重新修改上面的代碼,以便它不會進入已有的sponsorID
?先謝謝你。
究竟是什麼問題?你從這個時候期待什麼,但你從來沒有提到你得到什麼,或者我沒有看到它。 –
插入部件在哪裏? – zeflex