yo utilizo lo siguiente:
Código:
function genera_id($len){
$clave="";
$longitud = $len;
for ($i=1; $i<=$longitud; $i++)
{
$tmp = rand(1,3);
switch ($tmp) {
case 1:
$letra = chr(rand(48,57));
break;
case 2:
$letra = chr(rand(65,90));
break;
case 3:
$letra = chr(rand(97,122));
break;
}
$clave .= $letra;
}
return $clave;
}
le pasas con parámetro la longitud de la ID que quieres que te genere. Estará formada por letras mayúsculas, minúsculas y números.
Es importante que antes de insertar en la BD compruebes que no existe por si acaso.
Además MYSQL por defecto no distingue entre mayúsculas y minúsculas por lo que si quieres que así sea debes declarar el campo ID de la tabla como BYNARY.
Espero que sea de ayuda.
Un saludo,
Alejandro