2013-03-10 2 views
0

У меня есть таблица с автоинкрементным «id». У меня есть другой столбец в той же таблице, у которого есть «ключ», который я хочу использовать на основе «id» с автоматическим приращением. Это обеспечит отсутствие дублирующего «ключа». Я хочу, желательно, иметь 6-символьный уникальный генератор идентификаторов. Я нашел это online, но я открыт для других предложений.Как создать случайный и уникальный идентификатор на основе текущей строки таблицы с использованием PHP и MySQL?

+0

проверить этот: http://stackoverflow.com/questions/3954599/generate-random-string-from-4-to-8-characters-in-php –

ответ

0
echo $result['id'] . '_' . uniqid('', true); 

это будет производить что-то вроде 1_513c5858c04967.71142475, префикс ID_ всегда будет уникальным на основе базы данных Ofcourse

разве это достаточно уникальный?

ааа вы хотите 6 символов, как насчет:

function randString($length, $charset='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz') 
{ 
    $str = ''; 
    $count = strlen($charset); 
    while ($length--) { 
     $str .= $charset[mt_rand(0, $count-1)]; 
    } 

    return $str; 
} 

    $key = $result['id'] . '_' . randString(6); //this is unique, cause even you get at a chance of a million that you will get 2 same randString(6); you will have always unique prefix ID_ so you will have 1_G7owOq and 2_G7owOq 

    //the code below is just an example of how to loop column for unique key and u dont need it :P just maybe someone else needs it. 
    while(mysqli_num_rows(mysqli_query($con, "SELECT id FROM table WHERE key = '".mysqli_real_escape_string($con, $key)."'")) > 0) { 
    $key = $result['id'] . '_' . randString(6); 
    } 
+0

Можно ли создать «ключ» только для 6 символов? (в итоге). Если ряды становятся слишком высокими ... Я мог бы придумать что-то вроде 345000_aeRfTG в противном случае. Можете ли вы рассказать, как мне это достичь? –

0

Тогда последний путь я отправил вас здесь:

$key = randString(6); 
while(mysqli_num_rows(mysqli_query($con, "SELECT id FROM table WHERE key = '".mysqli_real_escape_string($con, $key)."'")) > 0) { 
    $key = randString(6); 
} 

Он всегда будет создавать случайный ключ 6 обугленного, потому что если он удаляет уже существующий ключ в db, он будет воссоздавать новый и т. д., пока не станет уникальным:] Это лучший способ для u, таким образом я также использую:]

На самом деле лучший способ было бы геном (62^6) * 6 байт каждая клавиша -> 317 ГБ, если я не ошибаюсь (утро):] Я не думаю, что вы ударите 1/10000 из этого:]

+0

чувак .. я думаю, что вы гениальный математик. Спасибо! –

Смежные вопросы