Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 修改SQL查询以返回用户自己的帖子?_Php_Mysql_Sql - Fatal编程技术网

Php 修改SQL查询以返回用户自己的帖子?

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

目前,查询工作正常,并按其预期执行。但是,我想更改查询,以便它检索用户自己的帖子以及其他帖子。我该怎么做?我尝试过像或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 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我试着把它添加到查询的开头和结尾,但正如我所说的,没有用。