gpt4 book ai didi

php - 关注/取消关注工具 PHP/mySQL

转载 作者:行者123 更新时间:2023-11-29 22:19:15 25 4
gpt4 key购买 nike

我确信我遗漏了一些明显的东西,或者我为此工具编写的 mySQL 代码不正确。

我拥有的是一个允许人们互相关注的网站。如果他们关注某个用户,他们应该在用户仪表板中看到该用户的更新。

我必须在 mySQL 查询中将多个表绑定(bind)在一起才能获取相关信息。

这是表格

用户

ID                Username           Password
-------------|---------------|------------------
1 User1 UserPass
2 User2 UserPass
3 User3 UserPass

用户详细信息

ID                UserID           UserPhoto
-------------|---------------|------------------
1 1 User1photo.jpg
2 2 User2photo.jpg
3 3 User3photo.jpg

用户状态帖子

UserStatusID       UserID           status
-------------|---------------|------------------
1 1 Hey My first post
2 2 Woah this is cool
3 3 It doesnt work

关注者

followid       followerUserID   beingFollowedUserID
-------------|---------------|------------------
1 3 1

这些表中有更多的列和行,但这是问题的基本形式。

正如您从关注者表中看到的那样,User3 正在关注 User1,因此应该能够看到他们在 userstatusposts 中发布的帖子,用户详细信息和用户也需要绑定(bind)的原因是这样我可以显示用户的照片和用户用户名

我目前无法使用的 SQL 是:

SELECT * FROM userstatusposts 
JOIN followers ON userstatusposts.userid = followers.followeruserid
JOIN users ON userstatusposts.userid = users.id
JOIN user_details ON userstatusposts.userid = user_details.userid
WHERE followers.beingFollowedUserID='$userid'
ORDER BY userstatusposts.userstatusid DESC
LIMIT 10

然而,这一切都是错误的,因为当我在我的 PHP 代码中实现它时,我看到了错误用户的帖子($userid 是登录用户)。

PHP 页面:

 <?php
$sql = "SELECT * FROM userstatusposts
JOIN followers ON userstatusposts.userid = followers.followeruserid
JOIN users ON userstatusposts.userid = users.id
JOIN user_details ON userstatusposts.userid = user_details.userid
WHERE followers.beingFollowedUserID='$userid'
ORDER BY userstatusposts.userstatusid DESC
LIMIT 10
";

$result = $conn->query($sql);
$rowcount=mysqli_num_rows($result);
if ($rowcount === 0) {
echo '<li style="list-style-type: none;"><p>Your not currently folllowing anyone.</p></li>';
} else {
while($row = $result->fetch_assoc()) {
if ($row['posttype'] == 'message') {
echo '<li style="list-style-type: none;"><a href="#"><img src="userimg/'.$row['userphoto'].'" height="90px" width="90px"></a><h3><a href="#">'.$row['username'].'</a></h3><small>17/06/2014</small><p>'.$row['status'].'</p></li>';
}
else if ($row['posttype'] == 'map') {
echo '<li style="list-style-type: none;"><a href="#"><img src="userimg/'.$row['userphoto'].'" height="90px" width="90px"></a><h3><a href="#">'.$row['username'].'</a></h3><p>has recently added <b>'.$row['status'].'</b> to there travel map</p></li>';
}
else if ($row['posttype'] == 'like') {
echo '<li style="list-style-type: none;"><a href="#"><img src="userimg/'.$row['userphoto'].'" height="90px" width="90px"></a><h3><a href="#">'.$row['username'].'</a></h3><p>has recently liked a trip report called <b>'.$row['status'].'</b></p></li>';
}
else if ($row['posttype'] == 'report') {
echo '<li style="list-style-type: none;"><a href="#"><img src="userimg/'.$row['userphoto'].'" height="90px" width="90px"></a><h3><a href="#">'.$row['username'].'</a></h3><p>has recently shared a trip report called <b>'.$row['status'].'</b></p></li>';
}
else {
echo 'We are currently expirencing a few diffculties';
}
}

}
?>

我知道这里使用了其他列,但它们在上面列出的表格中,我只是将它们排除在这个问题之外。

有什么建议说明为什么我的 SQL 代码返回了错误的信息吗?这是我忽略的显而易见的事情吗?

最佳答案

您的查询返回所有关注者的状态,而不是被关注的状态。

你应该改变

WHERE followers.beingFollowedUserID='$userid' 

WHERE followers.followerUserID = '$userid' 

此外,这与你的问题无关,但你的代码存在安全问题。在查询中使用 $userid 之前,您应该先对其进行清理。

$userid = (int)$userid

// .. now $userid is safe to use in $sql

关于php - 关注/取消关注工具 PHP/mySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30911177/

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