为什么我的while循环吐出同一行50次以上? PHP

时间:2018-02-28 17:52:14

标签: php mysql pdo

这是我的代码:

 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+,也就是数据库中唯一的一行,但它应该只返回一次?

2 个答案:

答案 0 :(得分:3)

您在每个循环中再次运行查询。

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

GetLatestUsers应该返回语句。

return $statement;

答案 1 :(得分:2)

您正在运行查询并从函数返回一行,并且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
}