Получить все результаты из базы данных с помощью mysqli

пожалуйста, ознакомьтесь с моим кодом ниже. С этим классом я могу показывать результаты следующим образом:

$connectTest = new testResults(); $test = $connectTest->grabResults(test, id, id); echo $test['id']; echo $test['name']; echo $test['address']; 

В моей базе данных у меня есть несколько полей в таблице «test». Я перехожу на свою страницу, используя index.php? Id = 1. При этом я показываю только результаты из одной строки, потому что он захватывает все результаты WHERE id = 1.

Мне нужен класс ниже для отображения нескольких результатов. Он отображает только одну строку. Но если у меня несколько строк с id = 1, я бы хотел отобразить эти результаты, но я не могу заставить его работать. Я пробовал много вещей, но всегда получаю только один результат.

класс:

 class testResults { public function grabResults($table, $field, $id) { $result = $this->db->mysqli->query("SELECT * FROM $table WHERE $field = $id"); $resultData[] = array(); if(!$result) { return false; } while($row = $result->fetch_assoc()) { $rows[] = $row; } foreach ($rows as $resultData) { return $resultData; } } } 

Редактировать:

 Array ( [id] => 25 [name] => test [status] => 1 ) Array ( [id] => 25 [name] => test [status] => 3 ) Array ( [id] => 25 [name] => test [status] => 5 ) Array ( [id] => 25 [name] => test [status] => 4 ) Array ( [id] => 26 [name] => test [status] => 1 ) Array ( [id] => 26 [name] => test [status] => 3 ) Array ( [id] => 27 [name] => test [status] => 1 ) Array ( [id] => 27 [name] => test [status] => 3 ) Array ( [id] => 27 [name] => test [status] => 5 ) Array ( [id] => 27 [name] => test [status] => 4 ) Array ( [id] => 27 [name] => test [status] => 2 ) Array ( [id] => 27 [name] => test [status] => 4 ) Array ( [id] => 27 [name] => test [status] => 1 ) 

Я получаю результаты, как указано выше, любой способ легко отображать эти результаты в эхо? Для каждого идентификатора существуют разные результаты, поэтому результаты будут варьироваться в зависимости от каждого запроса. Поэтому я хотел бы отображать результаты в таблице, например, так:

 echo '<table> <tr> <td>$id</td> <td>$name</td> <td>$status</td> </tr> </table>'; 

Таким образом, все результаты будут отображаться как в цикле while.

Вы можете просто вернуть массив из функции, а затем выполнить цикл в вашем скрипте

 while($row = $result->fetch_assoc()) { $rows[] = $row; } return $rows; 

Вы можете зацикливаться на своем скрипте

 $test = $connectTest->grabResults(test, id, id); foreach($test as $value) { print_r($value); } 

После редактирования OP

Если вам нужно распечатать их отдельно, вы можете получить доступ ко всем элементам с именами переменных и областями с помощью клавиш, как следует

 $test = $connectTest->grabResults(test, id, id); echo '<table>'; foreach($test as $value) { echo '<tr> <td>'.$value['id'].'</td> <td>'.$value['name'].'</td> <td>'.$value['status'].'</td> </tr>'; } echo '</table>'; 

Похоже, вы возвращаете одну строку своих результатов с помощью этого бита функции:

  foreach ($rows as $resultData) { return $resultData; } 

Вы должны просто вернуть все это.

  while($row = $result->fetch_assoc()) { $rows[] = $row; } return $rows; 

return foreach() Итерация означает остановку сразу после первой итерации. Поэтому вы всегда будете получать только первый результат.

Вам лучше написать это как:

  public function grabResults($table, $field, $id) { $result = $this->db->mysqli->query("SELECT * FROM $table WHERE $field = $id"); $rows = array(); while($row = $result->fetch_assoc()) { $rows[] = $row; } return $rows; }