Это чрезвычайно запутанно ... почему не хватает числа с автоинкрементом? Этот код также никогда не будет работать должным образом. Если по какой-либо причине вы ДОЛЖНЫ использовать случайное число, то вы сделаете это так:
while(true) {
$id_rand = mt_rand(1,9999);
$result = mysql_query("SELECT count(*) FROM albums WHERE dosjeid=$id_rand") or die(mysql_error());
$row = mysql_fetch_row($result);
if ($row[0] == 0) {
break; // our random number isn't in the database, so exit the loop
}
}
Однако вот некоторые проблемы с этим:
1) Вы получите бесконечный цикл, когда достигнете 9999 записей Доси
2) Чем больше записей в базе данных, тем дольше этот цикл займет поиск «свободного» слота. По мере того, как вы приближаетесь к 9999 записям, у вас будет ДОЛГОЕ время найти этот один пустой слот
3) Если вы пытаетесь «скрыть» идентификаторы любого члена, чтобы пользователи не могли просто увеличить параметр идентификатора где-нибудь, чтобы увидеть записи других людей, есть FAR FAR FAR более эффективные / более простые способы сделать это, такие как шифрование Значение идентификатора перед отправкой клиентам.