[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Цикл WHILE при сверениис MYSQL базой
ZEREX
Пожалуйста прошу подсказать, не работает такая конструкция :
do
{
$id = rand(1, 100000);
$query="SELECT id FROM theme WHERE id='$id'";
$sql = mysql_query($query);
$row = mysql_fetch_row($sql);
}while(!$row)


Я хочу создать рандомное число и сверить существует ли такое число в базе, но ни чего не выходит, прошу помощи! Или я совсем затупил sad.gif



Спустя 8 минут, 36 секунд (16.07.2010 - 18:51) qpayct написал(а):
do тут не надо использовать. делай так
$id = rand(1, 100000);
$query="SELECT id FROM theme WHERE id='". $id ."'";
$sql = mysql_query($query) or die ($query .'<br />'. mysql_error());
$row = mysql_fetch_row($sql);
print_r($row);
но учти, если такого id нет соответственно выводится ошибка, а елс и ты хочешь выводить рандомную запись из базы для этого есть функция sql

Спустя 15 минут, 47 секунд (16.07.2010 - 19:06) ZEREX написал(а):
я хочу вносить в базу новый ID после того как проверил, что такого id в базе не существует. т.е вначале у меня идет генерация числа $id = rand(1, 100000); потом я проверяю есть ли оно. Если есть то снова генерирую число и снова проверяю есть ли оно в базе? Если нету то добавляю запись с этим id . Подскажите подходящую для меня конструкцию пожалуйста!

Спустя 5 минут, 44 секунды (16.07.2010 - 19:12) Ice написал(а):
А не легче ль присвоить столбцу id первичный ключ и автоинкремент?

Спустя 14 минут, 24 секунды (16.07.2010 - 19:27) ZEREX написал(а):
Хочется конкретно тот способ который я описал, он нужен

Спустя 2 минуты, 24 секунды (16.07.2010 - 19:29) qpayct написал(а):
лучше научись сразу, как надо - быстрее в сотни раз будет выполнятся

Спустя 1 час, 29 минут, 48 секунд (16.07.2010 - 20:59) Nikitian написал(а):
Ну раз надо, то...

$maxiter_=$maxiter=50;
do
{
$id = rand(1, 100000);
$query="SELECT id FROM theme WHERE id='$id' limit 1";
$sql = mysql_query($query);
if($sql && mysql_num_rows($sql)==1)
$row=false;
else
$row=true;
$maxiter--;
if($maxiter<0){
echo'Превышено максимальное количество попыток '.$maxiter_;
break;
}
}
while(!$row)


Можете увеличивать максимальное количество итераций в разумных пределах, но никогда, повторяю: никогда не делайте циклы с неявным окончанием!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.