这是我的代码:
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+,也就是数据库中唯一的一行,但它应该只返回一次?
答案 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
}