gpt4 book ai didi

PHP PDO 如何在我的用户列表旁边显示我正在关注谁?

转载 作者:行者123 更新时间:2023-11-29 13:49:11 24 4
gpt4 key购买 nike

我正在家里做一个自学 PHP PDO 的项目。我的项目是从头开始创建一个基本版本的 Twitter。但我被困住了。我想要做的是显示一个用户列表(按 id 排序),我可以做得很好,但除了该用户列表之外,我想显示当前登录的用户是否关注该人,以便我可以显示链接以关注或取消关注它们。据我所知,这确实是一个关于数组和 foreach 循环的问题。

数据库中的相关两个表如下所示(带有示例数据):

用户:
编号 |用户名
1 |乔什
2 |山姆
3 |简

以下:
用户 ID | follower_id
2 | 1
3 | 1

例如,当前登录的用户 Josh(id 为 1)正在关注 Sam(id 为 2)。随后的数据库行将显示 follower_id 1、user_id 2。

我编写了两个函数来显示所有用户的 ID 和用户名,另一个函数来显示当前登录的人正在关注谁。它们在这里:

    function show_users(){
$sql = "select id, username from users order by id";
$stmt = $GLOBALS['db']->prepare($sql);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $result;
}

function check_follow($userid){
$sql= "SELECT DISTINCT user_id FROM following WHERE follower_id = '$userid' ";
$stmt = $GLOBALS['db']->prepare($sql);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $result;
}

如果我只想显示按 id 排序的用户列表,这一切都可以正常工作。

但我想要做的是在用户列表旁边显示一列,显示您是否正在关注该人,即并提供“关注”或“取消关注”他们的链接。

目前,我页面的相关部分如下所示:

<?php

$userid = $_SESSION['user']['id'];
$following = check_follow($userid);
$rows = show_users();

?>

<h1>Follow list</h1>
<table>
<tr>
<th>id</th>
<th>Username</th>
<th>Follow status</th>
</tr>
<?php foreach($rows as $row): ?>
<tr>
<td><?php echo $row['id']; ?></td>
<td><?php echo $row['username']; ?></td>
<td><?php
if (in_array($following, $rows)){
echo "<a href='#'>unfollow</a>";
}else{
echo "<a href='#'>follow</a>"; } ?>
</td>
</tr>
<?php endforeach; ?>
</table>

一切正常(除了显示我是谁/不关注部分),它没有显示某些人的“关注”链接和其他人的“取消关注”链接!

我花了几个小时在这上面。我已经阅读了数组、foreach、in_array、PDO fetch 语句以及有关输出不同数据的教程,但没有一个有帮助。大多数东西都是非 pdo 的,这也没有什么帮助。

求救:)

最佳答案

您不想循环一个结果集,然后对每一行进行查询。效率低下,数据库可以帮你完成。

尝试连接查询:

SELECT u.id, u.username, IF(f.follower_id IS NULL, 0, 1) as following
FROM users u
LEFT JOIN following f
ON u.id = f.user_id
AND f.follower_id = $loggedinuser

LEFT JOIN 为您提供用户表中的每一行,以及后面与“ON”子句中的条件匹配的任何行。如果没有匹配,这些列将在结果中设置为 NULL。

关于PHP PDO 如何在我的用户列表旁边显示我正在关注谁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16940580/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com