Tu logica en el script donde consultas/insertas en la bd esta mal. Tendrias que realizar un select usando como condicion el numero que generaste y entonces, actuar segun el numero de filas devueltas.
Algo así.. por el otro lado, aquí te dejo un código -y la explicación de como funciona- que te genera X cantidad de números aleatorios.
Código PHP:
Ver original<?php
do {
$rnd = mt_rand(100000000, 999999999); $numbers[] = $rnd;
} while (count($numbers) <= 1000);
Lo estoy limitando a solamente 1000 numeros. Se crea un arreglo que es el que ira guardando los numeros. Luego con un do-while se empieza la generacion de los mismos. Un simple mt_rand con el rango adecuado te da los numeros de 9 cifras que buscas. Una vez que se tiene ese numero aleatorio, se comprueba que no exista ya en el arreglo, y si existe, nos vamos a generar un nuevo numero. Asi hasta que el total de elementos de el arreglo sean 1000.
Eso si, probé en mi maquina correr el script generando los 100000 numeros y me tomo un rato... 10m31.942s