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