Php 修改SQL查询以返回用户自己的帖子?
目前,查询工作正常,并按其预期执行。但是,我想更改查询,以便它检索用户自己的帖子以及其他帖子。我该怎么做?我尝试过像或P.author=$\u SESSION['username']这样的方法,但这似乎会导致用户自己的帖子被多次回响Php 修改SQL查询以返回用户自己的帖子?,php,mysql,sql,Php,Mysql,Sql,目前,查询工作正常,并按其预期执行。但是,我想更改查询,以便它检索用户自己的帖子以及其他帖子。我该怎么做?我尝试过像或P.author=$\u SESSION['username']这样的方法,但这似乎会导致用户自己的帖子被多次回响 $gtPsts = "SELECT P.id, P.subid, P.author, P.post, P.access, P.date, F.friends, F.following, F.f1, F.f2, F.status FROM posts AS
$gtPsts = "SELECT P.id, P.subid, P.author, P.post, P.access, P.date, F.friends, F.following, F.f1, F.f2, F.status
FROM posts AS P, friends AS F
WHERE (F.f1 = '$_SESSION[username]' AND F.f2 = P.author AND F.status = 1 AND P.access = 'Public' OR P.access = 'Friends')
OR (F.f2 = '$_SESSION[username]' AND F.f1 = P.author AND F.status = 1 AND P.access = 'Public' OR P.access = 'Friends')
OR (F.f1 = '$_SESSION[username]' AND F.f2 = P.author AND F.following = True AND P.access = 'Public' OR P.access = 'Following')
ORDER BY P.date DESC LIMIT 20";
表的结构如下:id int、subid int、author varchar、post longtext、access varchar、date datetime 您多次收到用户自己的帖子,因为查询将您的两个表post和friends连接起来。因此,如果您筛选P.author=$\u SESSION['username'],您将得到他的一篇文章以及friends表中的每个项目
你可以采取变通办法。如果您的friends表有一个主键/唯一键,比如id,您可以使用或P.author='$\u SESSION[username]'和F.id=SELECT id FROM friends LIMIT 1。必须有一种更有效的方法,但这应该已经有所帮助。你能发布你的表的结构吗?我尝试过类似于或p.author=$\u SESSION['username']的方法,你到底在哪里尝试在查询中添加它?或'Friends'子句的目的是什么?它的计算结果总是错误的。要么这个子句可以删除,要么它是某种逻辑错误的标志。@kordirko我猜这是真的,P.access在“Public”,“Friends”@kordirko事实上我不知道为什么会这样。这是一个我不经常访问的PHP类文件的内部。几个月前,我可能正试图通过这个查询来查找用户自己的帖子,但当我停下来的时候,我忘了删除这一行。Mikey Dinescu我试着把它添加到查询的开头和结尾,但正如我所说的,没有用。