mysql — Почему мой цикл while выплевывает одну и ту же строку более 50 раз? Переполнение стека

Вот мой код:

 public function GetLatestUsers(){
$statement = $this->Db->prepare("SELECT * FROM users ORDER by id DESC LIMIT 10");
$statement->execute();

return $statement->fetch(PDO::FETCH_ASSOC);}

А вот цикл while:

<?php

while($row = $crud->GetLatestUsers()){?>

<tr>
<td></td><td><?php echo $row['id']; ?></td><td><img src="" style="border-radius:15px; margin-right:10px;" width="25px" height="25px">  <?php echo $row['username'] ?></td><td><font color="green">Positive</font></td><td>Confirmed</td><td><a href="">Feedback</a></td>
</tr>

<?php
}

?>

Это просто возвращает 50+ той же строки, или единственной строки в базе данных, но она должна вернуть ее только один раз?

-4

Решение

Вы запускаете запрос снова в каждом цикле.

$result = $crud->GetLatestUsers();
while($row = $result->fetch(PDO::FETCH_ASSOC)){
// do whatever.
}

GetLatestUsers должен вернуть инструкцию.

return $statement;
3

Другие решения

Вы выполняете запрос и возвращаете одну строку из функции и while цикл выполняется бесконечно (возможно, пока не истечет максимальное время выполнения). Лучше было бы вернуть все строки в виде массива:

$statement = $this->Db->prepare("SELECT * FROM users ORDER by id DESC LIMIT 10")
$statement->execute();
return $statement->fetchAll(PDO::FETCH_ASSOC);

Затем зациклите возврат функции:

foreach($crud->GetLatestUsers() as $row){
// do stuff with $row
}
2

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector