Задать вопрос

Как решить проблемы с выборкой из БД MySQL?

Пытаюсь сделать выборку из БД mySQL и засунуть в select, вот код:
<label>Страна: 
                   <select class="form-control" required="required" id="country1" name="country1" autocomplete="on">
                    <optgroup>
                      <?php
                        $query = "SELECT country_name_ru FROM countries LIMIT 220";
                        $result = mysqli_query($link, $query);
                        $row = mysqli_fetch_array($result);
                        $cnt = count($row);
                        for ($i=0; $i < $cnt; $i++) { 
                          echo '<option>'.$row[$i].'</option>';
                        }
                      ?>
                    </optgroup>
                  </select>
                  <?php 
                    echo "$cnt";
                    echo '<br>';
                  ?>
                </label>


Но почему-то выводит только первую страну и потом пустую строку, хотя в БД 220 стран. В чем может быть дело? В чем ошибка?
  • Вопрос задан
  • 2644 просмотра
Подписаться 5 Оценить 3 комментария
Решения вопроса 1
disc
@disc
веб-разработчик
Потому что: mysqli_fetch_array — Выбирает одну строку из результирующего набора и помещает ее в ассоциативный массив
Сделайте так
while ($row = mysqli_fetch_array($result)) {
    echo '<option>'.$row[0].'</option>';
}

вместо
$row = mysqli_fetch_array($result);
$cnt = count($row);
for ($i=0; $i < $cnt; $i++) { 
echo '<option>'.$row[$i].'</option>';
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Snewer
выводит Var_dump переменных? Так же советую перебирать массив с помощью foreach
Ответ написан
Комментировать
7workers
@7workers
$query = "SELECT country_name_ru FROM countries LIMIT 220";
$result = mysqli_query($link, $query);
while( $row = mysqli_fetch_array($result) )
{
   echo '<option>'.$row[$i].'</option>';
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы