Jeśli chodzi o losowanie ciągu znaków to ja używam czegość takiego:
function randomkeys($length)
{
$pattern = "1234567890abcdefghijklmnopqrstuvwxyz";
for($i=0;$i<$length;$i++)
{
$key .= $pattern{rand(0
,35
)}; }
return $key;
}
Jako parametr podajesz INT z ilością znaków jaką ma wygenerować.
A później już tylko wykonujesz zapytanie sprawdzające czy w bazie jest już taki numer, jeśli nie ma to dodajesz i tyle cała filozofia a jeśli jest taki to nadal w pętli wykonujesz generowanie i sprawdzanie