我有一个查询,用于搜索用户名以及用户是否遵循这些用户名。该操作的结果显示在while循环中。在这个循环中,我有另一个查询,它将查看有多少人关注该用户。问题是,对于所有结果,它将显示相同的数字。好像它只运行一次查询。下面是代码:
<?php
$req = $db->prepare("SELECT * FROM users, follows WHERE follows.userId = ? AND follows.followerId = users.userId ORDER BY users.username");
$req->execute(array($userId));
while($data = $req->fetch()){
?>
<p>
<img src="files/useruploads/<?php echo $data['profilePic']; ?>" class="left" style="width: 30px; height: 30px; border-radius: 900px;" alt=""/>
<a href="<?php echo $data['username']; ?>/"><?php echo $data['username']; ?></a><br>
<?php
$followers = $db->prepare("SELECT *, COUNT(*) AS followers FROM follows WHERE follows.followerId = ?");
$followers->execute(array($data["userId"]));
if($date = $followers->fetch()){
$totFollowers = $date["followers"];
}
?>
<span class="grey-text"><?php echo $totFollowers; ?></span>
</p>
<?php
}
?>
将内部查询代码替换为:
$followers = $db->prepare("SELECT *, COUNT(*) AS followers FROM follows WHERE follows.userId = ?");
预期的结果应该到来。
假设查询字符串没有错误。
尝试替换下面的代码
if($date = $followers->fetch()){
$totFollowers = $date["followers"];
}
while($date = $followers->fetch()){
$totFollowers = $date["followers"];
}