Una pregunta...
Por que no lo haces simplemente autonumérico y dejas que MySQL se encargue de asignarle el siguiente consecutivo?
Hay varias formas de hacer lo que tu necesitas, pero no visualizo ninguna de ellas que a la vuelta de algún tiempo no termine siendo demasiado demandante de recursos, ya sea de la BD ó de PHP ( o peor, de ambos)...
Ejemplo...
Código PHP:
function nuevorand($lista) {
srand ((double) microtime( )*1000000);
do {
$random_number = rand(0,1000);
} while (in_array($random_number,$lista));
return $random_number;
}
$usados = array();
$busqueda= mysql_query("SELECT numsocio FROM usuarios");
while($fila = mysql_fetch_assoc($busqueda)) {
$usados[] = $fila["numsocio"];
}
$numsocio = nuevorand($usados);
Repito, debe haber 100 formas de conseguir lo mismo, pero siempre será mejor lo más simple y a prueba de fallos, usa un campo auto:increment en tu tabla, y listo