Код: Выделить всё
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;}
}
- Сохранение идентификатора пользователя как int(10): проблема с сохранением 10-значного идентификатора пользователя как int — его максимальный диапазон 2. 147 483 647. Если вышеуказанная функция генерирует уникальный идентификатор 9 999 999 999, то он не будет сохранен в таблице.
- Сохранить идентификатор пользователя как int(9): он может хранить максимальное сгенерированное число до 999 999 999. Однако приведенной выше функции придется несколько раз искать таблицу, чтобы убедиться, что это число уникально.
- Сохранять идентификатор пользователя как bigint(10): это решит проблему хранения уникального номера. Но возникает проблема из-за производительности bigint по сравнению с int в качестве первичного ключа.
Как лучше всего хранить этот 10-значный идентификатор пользователя?
Подробнее здесь: https://stackoverflow.com/questions/793 ... -or-bigint