gpt4 book ai didi

php - MySQL 查询连接未完全检索

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

在我的网站上,我正在尝试编写一个类似于 Facebook 和 Twitter 时间线的功能,用户可以“关注”另一个用户,并接收他们的“广播”。数据库表是:

**members**
--------
id
fullname
following

**broadcasts**
-----------
id
mem_id
broadcast (the content)
broadcast_date

members 表中的“following”是存储用户 ID 的 varchar 文本。因此,如果我关注用户 4 5 和 6 (4,5,6,) 将出现在以下列中。我的问题是,我从数据库中查询的内容,只是从我关注的第一个用户检索“广播”,而不是其他用户。

$sql_broadcasts = mysql_query("
SELECT *
FROM members
JOIN broadcast
ON(broadcast.mem_id = members.following)
WHERE members.id=$id
ORDER BY broadcast_date DESC
LIMIT 10;
");

其中 $id 是 $_SESSION['id']。我盯着这段代码看了很长时间,有人能发现我做错了什么吗?提前致谢

最佳答案

连接不是这样工作的。

假设broadcast.mem_id是数字类型,数据库将默默地转换members.follower_array;这将从 4,5,6 中生成 4,因此一条记录匹配。

您需要一个 m:n 关系才能正常工作,一张包含成员的表(您已经拥有了);另一个包含关注者的表,为每个关注者插入一条记录,其中包含正在关注的成员的成员 ID 和正在关注的成员的成员 ID。这样一个成员就可以有 0-n 个关注者。

Table member
id

Table follower
member_id
member_id_follower

然后你可以做类似的事情

SELECT
...
FROM
member AS mb
JOIN
follower AS fl ON fl.member_id = mb.id
WHERE
mb.id = 123

关于php - MySQL 查询连接未完全检索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6662323/

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