Możesz spróbować któryś ze sposobów generowania unikalnego zestawu znaków np.
W przykładzie następują po sobie 4 wystąpienia demonstrujące unikalność wygenerowanego ciągu.
<?php
echo '<pre>'
. PHP_EOL . '<b>hrtime(true)</b>' . PHP_EOL
. hrtime(true). PHP_EOL
. hrtime(true). PHP_EOL
. hrtime(true). PHP_EOL
. hrtime(true). PHP_EOL
. PHP_EOL . '<b>intval(microtime(true))</b>' . PHP_EOL
. intval(microtime(true)*1000*1000). PHP_EOL
. intval(microtime(true)*1000*1000). PHP_EOL
. intval(microtime(true)*1000*1000). PHP_EOL
. intval(microtime(true)*1000*1000). PHP_EOL
. PHP_EOL . '<b>uniqid(mt_rand())</b>' . PHP_EOL
. uniqid(mt_rand()). PHP_EOL
. uniqid(mt_rand()). PHP_EOL
. uniqid(mt_rand()). PHP_EOL
. uniqid(mt_rand()). PHP_EOL
. PHP_EOL . '<b>uniqid(hrtime(true))</b>' . PHP_EOL
. uniqid(hrtime(true)). PHP_EOL
. uniqid(hrtime(true)). PHP_EOL
. uniqid(hrtime(true)). PHP_EOL
. uniqid(hrtime(true)). PHP_EOL
. PHP_EOL . '<b>bin2hex(random_bytes(10))</b>' . PHP_EOL
. bin2hex(random_bytes(10)). PHP_EOL
. bin2hex(random_bytes(10)). PHP_EOL
. bin2hex(random_bytes(10)). PHP_EOL
. bin2hex(random_bytes(10)). PHP_EOL
. PHP_EOL . '<b>rtrim(chunk_split(bin2hex(random_bytes(8)), 4, \'-\'), \'-\')</b>' . PHP_EOL
. rtrim(chunk_split(bin2hex(random_bytes(8)), 4, '-'), '-'). PHP_EOL
. rtrim(chunk_split(bin2hex(random_bytes(8)), 4, '-'), '-'). PHP_EOL
. rtrim(chunk_split(bin2hex(random_bytes(8)), 4, '-'), '-'). PHP_EOL
. rtrim(chunk_split(bin2hex(random_bytes(8)), 4, '-'), '-'). PHP_EOL
. '</pre>';
?>
oprócz tego można w sql-u dodać do kolumny UNIQUE wtedy baza danych będzie" pilnować" unikalności wpisu w danej kolumnie, nie uda się INSERT, który nie będzie zawierał unikalnej wartości w zadanej kolumnie.