Есть код:
Код
$result=mysql_query("SELECT * FROM russian_c ORDER BY c10 DESC LIMIT $amount");
if ($pin_row=mysql_fetch_array($result)) {
do {
$pin.=$pin_row['c10'];
$result=mysql_query("DELETE FROM russian_c WHERE c10='$pin'");
$pin.="<br>#".$pin."<br>";
}
while ($pin_row=mysql_fetch_array($result));
}
if ($pin_row=mysql_fetch_array($result)) {
do {
$pin.=$pin_row['c10'];
$result=mysql_query("DELETE FROM russian_c WHERE c10='$pin'");
$pin.="<br>#".$pin."<br>";
}
while ($pin_row=mysql_fetch_array($result));
}
Переменная $amount передаётся в код успешно. Смысл его в том что он вытаскивает из таблицы russian_c пинкоды, игнорируя пустые записи (для этого предусмотрена сортировка DESC и ограничение $amount, которое не даст выбрать больше чем там есть непустых записей.. но это ерунда, можно туда вообще константы подставить, смысл проблемы не меняется).
Замутка в том, что определённый в переменную $pin пинкод надо сразу же удалять, чтобы два и более пользователя не смогли получить себе одинаковые пины. Однако несмотря на пол дня мучений, второй result выполняет запрос к БД только один раз. И удаляет только один пин, даже если выдано семнадцать (и цикл, естессна, тоже пройден 17 раз).
Хэлп ми плиз, кто поможет - принесу парного молочка
Спустя 27 минут, 1 секунда (10.09.2007 - 11:06) zaxar написал(а):
В результате выполнения первого запроса (select) создается переменная result, которая используется в условии цикла. Однако в теле цикла переменная result внезапно изменяется, так как ей присваивается результирующий набор данных второго запроса (delete). Следовательно, цикл уже выполняется не так, как было задумано.
Спустя 22 минуты, 10 секунд (10.09.2007 - 11:28) Jip написал(а):
Изменил имя второй переменной, но всё равно не удаляет
Спустя 1 час, 10 минут, 19 секунд (10.09.2007 - 12:38) zaxar написал(а):
А это, наверняка, потому что на второй и следующих итерациях переменная $pin имеет не то значение. В базе пинов есть всякие «#, <br> и пр...» ??
Нужно в первом $pin убрать точку, а второй вообще убрать.
Нужно в первом $pin убрать точку, а второй вообще убрать.
Спустя 6 часов, 45 минут, 27 секунд (10.09.2007 - 19:24) Jip написал(а):
Йолки.. ты прав Спасибо большое, дело было и правда в точке на первом $pin. Как же я сам не заметил..