我正在创建一个社交网络,您可以添加朋友和发布内容等。当您添加朋友时,它会将其插入数据库,在列调用朋友中。例如,如果我让哈利和罗恩成为朋友,那么在数据库中就会出现这样的情况。
友 哈利,罗恩
现在,当用户发布内容时,它会发布给所有朋友。您可以查看帖子。如果你有一个朋友,查看工作正常,但如果你有一个朋友,它将无法工作,因为PHP代码会寻找一个名为:Harry,Ron的人,因为这是朋友在数据库中的内容。我该怎么解决这个问题?
Posts.php
<?php
$friend = mysqli_query ($link, "SELECT friend_array FROM users WHERE username='$user'");
while($row = mysqli_fetch_array($friend)) {
$channel_name = $row['friend_array'];
}
?>
<div style="margin-top:120px;">
<?php
$posts = mysqli_query($link, "SELECT content FROM wgo WHERE Posted_By='$channel_name' ORDER BY id DESC");
while($row = mysqli_fetch_array($posts)) {
$channel_name2 = $row['content'];
?><div id="rpc"><br/><?php echo" $channel_name2";?></div>
<?php
}
?>
</div>
答案 0 :(得分:1)
您需要重新构建数据库。朋友不应该进入1列,而应该是一个单独的表,如下所示:
表1
Users:
Id Username
1 You
2 Harry
3 Ron
表2
Friends:
PrimaryId FriendId
1 2
1 3
这是正确的方法。总是有解析来完成工作,但我强烈建议你不要在这种情况下走那条路。
答案 1 :(得分:0)
您应该重新修改数据库的结构。由于朋友列表可能非常大,因此需要自己的表。但这就是你如何使用当前结构使其工作:
$friends = explode(',', $friends);
foreach($friends as $friend){
//do your query for each friend
}