Работа с несколькими полученными значениями

Рейтинг: 0Ответов: 1Опубликовано: 28.03.2015

Есть работающий запрос, который возвращает 4 строки результата. Однако при работе скрипта выводится только первая строка. В чем проблема?

$query = "SELECT `name_prof` FROM `prof_list` WHERE `id_sfer` in (SELECT `id_sfer` FROM `calc` WHERE `norm_getting`=1 and `ID`=$ID) AND `id_sred` in (SELECT `id_sred` FROM `calc2` WHERE `norm_getting`=1 and `ID`=$ID) ";

$sql = mysql_query($query,$link)or die(mysql_error());

$row =   mysql_fetch_array($sql);

$ans_final[]=$row['name_prof'];

foreach($ans_final as $value){
echo '<p class="private_answer"> '.$value . '</p>';
}

Ответ найден! Вывожу результат в цикле:

for ($i=0; $i<mysql_num_rows($sql); $i++){
    $row=mysql_fetch_array($sql);
    echo $row['name_prof'];
    echo "<br>";
}

Ответы

▲ 1

Согласно документации

mysql_fetch_array — Обрабатывает ряд результата запроса, возвращая ассоциативный массив, численный массив или оба

Т.е. mysql_fetch_array возвращает только одну строку за вызов. Чтобы получить все строки, нужно использовать что-то типа:

while($row = mysql_fetch_array($sql))
{
    echo $row['name_prof'];
    echo "<br>";
}

P.S. Расширение mysql устарело, постарайтесь отказаться от его использования в пользу MySQLi или PDO.