Code: Select all
function random_number($length) { // Creates random number
$original_string = array_merge(range(0,11));
$original_string = implode("", $original_string);
return substr(str_shuffle($original_string), 0, $length);
}
function unique_user_id() { //Check if number is unique from database
$user_id = random_number(10);
$query = "Select count(*) from users where user_id=?";
...
if($row[0] !=0) { unique_user_id();}
else {return $user_id;}
}
- Benutzer-ID als int(10) speichern: Das Problem beim Speichern einer 10-stelligen Benutzer-ID als int ist der maximale Bereich 2 147 483 647. Wenn die obige Funktion eine eindeutige ID 9 999 999 999 generiert, wird diese nicht in der Tabelle gespeichert.
- Benutzer-ID speichern als int(9): Es kann die maximal generierte Zahl bis zu 999.999.999 speichern. Die obige Funktion muss jedoch die Tabelle mehrmals durchsuchen, um sicherzustellen, dass diese Zahl eindeutig ist.
- Benutzer-ID als bigint(10) speichern: Dadurch wird das Problem der Speicherung einer eindeutigen Nummer gelöst. Aufgrund der Leistung von bigint im Vergleich zu int als Primärschlüssel entsteht jedoch ein Problem.
Was ist die beste Option, um diese 10-stellige Benutzer-ID zu speichern?