У меня есть таблица, которая выглядит так. Это часть общей информации, когда пользователь регистрируется на моем сайте.
+------------+------------+ | user_id | username | | 312543 | Bobby | | 543765 | Victoria | +------------+------------+
Мне просто интересно, как бы вы создали случайный уникальный номер для user_id
? Скажем, число от 1 до 100, которого еще нет в базе данных. Я хочу выполнить это, используя PHP, а не SQL.
Улучшение ответа Нита Темного Абсолюта: вы можете использовать uniqid(rand())
. uniqid()
будет генерировать число, основанное на внутренних часах вашего сервера, и rand()
будет префикс его случайным числом. Поэтому, даже если два пользователя регистрируются в одной и той же самой крошечной фракции, префикс rand()
присваивает им другой префикс с вероятностью более 99,99999%.
Вы можете использовать функцию uniqid
PHP. Это не случайный (он основан на часах сервера), но если у вас нет двух человек в одной и той же мельчайшей части секунды, тогда он будет гарантированно быть уникальным, и он не является последовательным.
Прежде всего, я согласен с @Shankar Damodaran, гораздо лучше использовать AUTO_INCREMENT
а не случайные идентификаторы, потому что, если вы начнете использовать случайные, тогда вам, возможно, придется сначала проверить, существует ли этот случайный идентификатор, а затем выбрать другой случайный и еще раз проверьте, пока, наконец, не получите уникальный.
И если вы действительно хотите, чтобы это было случайным, вы можете использовать функцию rand
PHP: http://www.php.net/manual/en/function.rand.php
function isUnique($var) { //we check here if var is unique, return TRUE on unique FALSE on non unique. } //this is my function for generating random strings(can be used for numbers) function _generateRandomString() { $chars = array_merge(range('a', 'z'), range(0, 9)); shuffle($chars); return implode(array_slice($chars, 0,25)); } //actual code: $string= _generateRandomString(); while(!isUnique($string)) //if string is unique, while loop stops. { $string= _generateRandomString(); }
С php u можно сделать так.
$pattern = "1234567890"; $ID = $pattern{rand(0,10)}; for($i = 1; $i < 7; $i++) { $ID .= $pattern{rand(0,10)}; }