Консультация № 182692
02.04.2011, 06:28
53.35 руб.
0 2 1
Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:
В моем скрипте, приведу его часть, не работает часть кода:
while ($next_links = mysql_fetch_array($all_links, MYSQL_NUM))
{
if ($next_links = 0)
{
echo 'Таких строк нет!';
}
Не работает условие if. Дальше идет условие else, которое выполняется. После выполнения else, я делаю проверку, то есть запускаю скрипт заново. Должно выполниться условие if, так как все выбранные значения удаляются и я должен получить ответ, что строки все удалены. И они на самом деле удалены. Но не получаю этого ответа. Предполагаю, что неправильный синтаксис аргумента в строке: if ($next_links = 0), так как я из массива пытаюсь получить строку. Подскажите, как сделать правильно.

Обсуждение

давно
Старший Модератор
312929
1973
02.04.2011, 07:17
общий
это ответ
Здравствуйте, rock!

Оператор сравнения - ==, то есть правильно будет так:
Код:

while ($next_links = mysql_fetch_array($all_links, MYSQL_NUM))
{
if ($next_links == 0)
{
echo 'Таких строк нет!';
}

Но даже и в этом случае код будет работать не совсем так, как требуется. Ведь если mysql_fetch_array возвращает FALSE (когда в результате запроса $all_links нет ни одного ряда или все ряды уже пройдены), то цикл while не будет больше выполнен ни разу и до if ($next_links == 0) очередь не дойдет. Правильнее, на мой взгляд, будет сделать так:
Код:

if (mysql_num_rows($all_links) == 0)
{
echo 'Таких строк нет!';
}
else
{
while ($next_links = mysql_fetch_array($all_links, MYSQL_NUM))
{
Код обработки $next_links
}
}
Неизвестный
02.04.2011, 09:26
общий
Адресаты:
Спасибо, все правильно. Вставил Ваш последний вариант кода, все заработало. Специально добавил запись, подходящую для удаления. Первым запуском скрипта удалил запись, вторым получил сообщение: Таких строк нет! Почему то оценка ответа временно отключена, поэтому ответил сюда - 5.
Форма ответа