朋友系统发布错误

时间:2013-12-28 00:16:06

标签: php

我正在创建一个社交网络,您可以添加朋友和发布内容等。当您添加朋友时,它会将其插入数据库,在列调用朋友中。例如,如果我让哈利和罗恩成为朋友,那么在数据库中就会出现这样的情况。

友 哈利,罗恩

现在,当用户发布内容时,它会发布给所有朋友。您可以查看帖子。如果你有一个朋友,查看工作正常,但如果你有一个朋友,它将无法工作,因为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>

2 个答案:

答案 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
}
相关问题