Вызов (циклический просмотр) списка строк MySQL в PHP дает неожиданный результат

Два фрагмента кода PHP:

Первый работает нормально, давая значения из разных строк последовательно.

while ($row = mysql_fetch_assoc($rst)) {
...
$link1 = $row['audio1'];
if ($link1) {
$link1 = $link1;
}
...
}

Второй выводит значение из первой строки и применяет его к каждой последующей строке.

while ($row = mysql_fetch_assoc($rst)) {
...
if ($row['audio1']) {
$link1 = $row['audio1'];
}
...
}

То есть где первый пример кода генерирует

Audio1.mp3
Audio2.mp3
Audio3.mp3

второй будет генерировать

Audio1.mp3
Audio1.mp3
Audio1.mp3

Вопрос в том, почему эти две похожие реализации отличаются по выходным данным.

Другой тестовый пример с удаленными … s (код чистого цикла) дает другую картину: первый пример выводит только одну строку (первую), вывод второго примера такой же, что и повторяющиеся строки.

Используемая таблица MySQL имеет следующую структуру:
Один стол,
INT (id), CHAR, SMALLINT, TINYTEXT, TEXT, TEXT, TINYTEXT (audio1). Все строки заполнены полностью, кроме последней (audio1), которая в основном пуста и имеет ненулевые значения где-то посередине (если мы сортируем по полю id).
Замена ‘audio1’ другим именем столбца дает правильные результаты (для этого поля) в обоих случаях.

Еще одним дополнением является то, что я действительно помещаю оператор SELECT изначально в mysql_query, который отфильтровывает строки. В зависимости от количества возвращаемых строк изображение для второго примера может немного отличаться, например, 3 неповторяющихся значения с последующим повторением третьего значения до конца.

0

Решение

Я починил это. Короче говоря — это было действительно очевидно: между циклами цикла переменная $ link1 не менялась в случае if не было true, Что мне нужно было сделать, это поставить $link1 = ""; или же unset ($link); сразу после while и в этом случае, если я когда-либо встречал пустое значение для $row['audio1'] он останется действительно пустым вместо того, чтобы повторно использовать старое значение для каждой новой строки.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]