我有两个数据库,我存储谁跟踪谁和另一个存储用户发布的帖子。
我想从以下数据库中选择用户所关注的所有人,并回显该用户所关注的用户名,并查询该帖子数据库以查找该用户的帖子。
我的问题是,如果用户关注多个用户, 我回应了这个用户关注的人的用户ID,我得到了 44443344330
当我用commans分隔每个id时,我得到:
44,44,33,44,33,0,
所以让我们给出一个$user_ids
;
$user_ids = "44,44,33,44,33,0, ";
查询:
$get_posts = mysql_query("SELECT * FROM posts WHERE userid = '$user_ids'");
但它只是显示第一个用户ID的记录,44。
如何检索所有用户的所有记录?
答案 0 :(得分:26)
查询应为:
SELECT * FROM posts WHERE userid IN (44,44,33,44,33,0)
但是,您可能需要重新考虑数据模型并确保它已标准化,以便您可以直接在数据库中表达此构造,而不会回显到以逗号分隔的字符串。
为什么你有两个数据库?你的意思是两个表?
答案 1 :(得分:21)
也许您想使用IN
SELECT * FROM posts WHERE userid IN ($user_ids)
答案 2 :(得分:1)
假设您有两个表格,而不是数据库,并且该表(让我们称之为“朋友”)描述了谁跟随谁
table friends(
userid
friendid
)
然后查询以获取X的朋友发布的帖子
SELECT
p.*
FROM posts p
JOIN friends f ON(p.userid = f.friendid)
WHERE f.userid = X
答案 3 :(得分:0)
$get_posts = mysql_query("SELECT * FROM posts WHERE userid in '($user_ids)'");
答案 4 :(得分:0)
$var= str_replace(","," or userid = ","userid =$your_data_from_db");
您的myqsl_query = SELECT * FROM posts where $var
答案 5 :(得分:0)
鉴于您有两个表,而不是两个数据库,匹配特定列的多个值的最简单方法如下:
SELECT * FROM posts WHERE userid IN (44,44,33,44,33,0)
*我在执行此操作时遇到的一个小问题。如果要匹配类型为VARCHAR(n)的列,请确保将匹配的值包装在“单引号”中,而不是“双引号”
例如:
SELECT * FROM posts WHERE name IN ('foo','bar','alpha','beta')