Php 在SQL查询中使用数组

Php 在SQL查询中使用数组,php,mysql,Php,Mysql,好的,我想在我的网站上有一个新闻提要。我有3个名为Users、Follow和Posts的表。基本用户数据进入Users表,谁在跟踪谁存储在Follow表中,用户发布的内容进入posts。现在,我知道如何从数据库表中选择每篇文章,并使用WHERE子句对其进行限制。但我该如何编写查询,从他们关注的用户的帖子中选择所有帖子,并按DESC date显示它们呢?谢谢。这是给你的总体布局,按照你提到的做三张表,我在下面列出了一个例子 [附表] 使用者 追随者 帖子 在users表中,至少应该有userid自

好的,我想在我的网站上有一个新闻提要。我有3个名为Users、Follow和Posts的表。基本用户数据进入Users表,谁在跟踪谁存储在Follow表中,用户发布的内容进入posts。现在,我知道如何从数据库表中选择每篇文章,并使用WHERE子句对其进行限制。但我该如何编写查询,从他们关注的用户的帖子中选择所有帖子,并按DESC date显示它们呢?谢谢。

这是给你的总体布局,按照你提到的做三张表,我在下面列出了一个例子

[附表]

使用者 追随者 帖子 在users表中,至少应该有userid自动递增值/主键之类的列

followers表应该有类似于userid的内容,它将与users表userid相匹配,followid列也将具有users表中follower的id

然后,对于posts表,您也希望有userid,因此在制作每个post时,它将具有users表中的id

然后,您需要执行以下操作:

SELECT p.*
FROM posts AS p
WHERE p.userid IN (SELECT followid FROM followers WHERE userid = ###)
ORDER BY p.date DESC
现在,这实际上取决于您如何获得用户id来解决这个问题。如果您在用户登录后使用类似于Facebook的会话传递用户id,那么您可以将userid=更改为userid=.$\u会话['userid']。但这又取决于你如何传递用户id,但上面的内容至少应该让你有点开始


确保在userid、followid列上放置索引,以便当表变大时,它将快速执行联接。

替代@Shane的答案的方法是使用联接运算符:

'SELECT p.* // I prefer to name all the fields, but for brevity's sake I'll use the shorthand  
FROM Posts AS p
INNER JOIN Follow AS f ON p.userid = f.followid  
WHERE f.userid = '.$selectedUserID.'  
ORDER BY p.date DESC;'
对于输入的用户ID$selectedUserID,它将在follow x-ref表中找到他们跟踪的人的所有用户ID,并将跟踪ID与用户ID匹配,然后从Post表中按日期降序找到他们各自的帖子。如果他们不跟随任何人或跟随的人没有帖子,则返回空

我还希望我不需要提醒您对数据库的输入进行清理,并将输出转送到web


这就是你要找的吗?

最好显示你对这类问题的模式。另外,您尝试过哪些查询?你已经接近期望的结果了吗?你尝试过的一些事情可能会帮你确定一个好的答案