za4me
@za4me
Человек

Вывод записей из БД while > foreach?

Добрый день, подскажите пожалуйста.

Вывожу данные из БД, циклом while при помощи foreach. Вот таким кодом:

<?php 
	//Запрос к БД table_products
	$result = mysqli_query($link, 'SELECT * FROM table_products');

	//Вывод товаров циклом while 
	while ($row = mysqli_fetch_assoc($result)) {
		foreach ($row as $key => $value) {
			$image = 'uploads_images/'.$row['image'];
			$title = $row['title'];
			$price = $row['prise'];
			$mini_features = $row["mini_features"];
		}
	}

	echo $title;
	echo $prise;
	echo $mini_features;
 ?>


И выводится только последняя запись в БД, а не все записи которые в БД.
Подскажите как вывести все записи?

з.ы. Желательно с комментариями что-бы не просто узнал решение, а понял как это работает. Спасибо за помощь.
  • Вопрос задан
  • 4342 просмотра
Пригласить эксперта
Ответы на вопрос 2
Arris
@Arris
Сапиенсы учатся, играя.
Ну да, все правильно. А какая по вашему запись должна выводиться?

Вы же в каждой итерации цикла перезаписываете $title, $price, $mini_features данными из каждой следующей прочитанной (_fetch_assoc) строки из таблицы.

//Вывод товаров циклом while 
  while ($row = mysqli_fetch_assoc($result)) {

      $image = 'uploads_images/'.$row['image'];
      $title = $row['title'];
      $price = $row['prise'];
      $mini_features = $row["mini_features"];
echo все что надо.
  }

А блок foreach тут лишний от слова совсем. Попробуйте ответить на вопрос, зачем он тут нужен.

А лучше не пробуйте и идите почитайте учебник по алгоритмам.
Ответ написан
@entermix
Ты в цикле пишешь результат в одну и ту же переменную, каждая итерация ее перезаписывает, в результате ты получаешь значение последней записи в БД. К тому же выводишь ты ее тоже 1 раз, сколько по твоему значений там должно быть?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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