PHP - Бесконечное, пока l oop от класса - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь создать while l oop из возвращенного выполнения оператора PDO в вызове класса Posts, но он создает бесконечное while l oop, хотя количество строк возвращается правильно . Это кажется простым ... Я неправильно пишу?

public function getRecent()
{
    $sql = "SELECT * FROM posts ORDER BY createdate DESC LIMIT 5";
    $stmt = $this->db->prepare($sql);
    $stmt->execute();

    return $stmt;

}

$post = NEW Posts($db);

echo $post->getRecent()->rowCount(); //5 results(correct)

while ($row = $post->getRecent()->fetch())
{
    //Creates infinite loop
}   

1 Ответ

1 голос
/ 06 мая 2020

Ваша проблема в том, что каждый раз, когда вы вызываете $post->getRecent(), он снова выполняет ваш запрос и поэтому $post->getRecent()->fetch() затем снова и снова возвращает первую строку набора результатов. Просто сделайте один вызов $post->getRecent() и используйте это значение вместо других вызовов:

$post = NEW Posts($db);
$result = $post->getRecent();
echo $result->rowCount();
while ($row = $result->fetch()) {
    // process rows
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...