Запрос PHP — SQL показывает только последний результат

#php

#php

Вопрос:

Это возвращает только последнюю из моих строк:

 <?php
				function all_infos_query() {
					global $connection;
					
					$query  = "SELECT * ";
					$query .= "FROM pages ";
					$query .= "JOIN subjects ";
					$query .= "ON pages.subject_id=subjects.id";
					$infos_set = mysqli_query($connection, $query);
					confirm_query($infos_set);
					return $infos_set;
				}
			
				
				function infos_content() {
					$infos_set = all_infos_query();		
					
					while($info = mysqli_fetch_assoc($infos_set)) {
						$output = htmlentities($info["content"]);
						$output .= " <br><br>";
					}
					mysqli_free_result($infos_set);
					return $output;
					
				}
			?>
            
            <?php echo infos_content() ?>  

Если я повторяю его так, он работает (возвращает все строки):

 <?php 
$result = all_infos_query();

if($result === FALSE) { 
	echo "query failed: " . mysqli_error($connection);
}
else {
	while($row = mysqli_fetch_array($result)) {
		echo htmlentities($row['content']);
		echo "<br><br>";
	}
}
?>  

Что мне нужно изменить в функции infos_content(), чтобы также получить все строки?
Большое спасибо!

Ответ №1:

Это потому, что вы переопределяете $ouput для каждого результата

 while($info = mysqli_fetch_assoc($infos_set)) {
                    $output = htmlentities($info["content"]); 
                    $output .= " <br><br>";
  

Вместо этого создайте $ouput вне цикла и добавьте к нему..

  $output ='';
while($info = mysqli_fetch_assoc($infos_set)) {
                    $output .= htmlentities($info["content"]); 
                    $output .= " <br><br>";