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

标签 php mysql sql

目前,查询工作正常并且按预期进行。但是,我想更改查询,以便它除了检索其他帖子外还检索用户自己的帖子。我怎样才能做到这一点?我已经尝试过 OR P.author = $_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).

最佳答案

您多次获得用户自己的帖子,因为查询连接了您的两个表postsfriends。因此,如果您过滤 (P.author = $_SESSION['username']),您将获得他的一篇 posts 以及 friends< 中的每一项表。

您可以使用变通方法。如果您的 friends 表有主键/唯一键,比方说 id,您可以使用 OR (P.author = '$_SESSION[username]' AND F .id = (SELECT id FROM friends LIMIT 1)).必须有更高效的方法,但这应该已经有所帮助。

关于php - 修改 SQL 查询以返回用户自己的帖子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20926417/

相关文章:

SQL Server 2014 - SQL 配置管理器中未安装任何服务

php - 如何检查 PHP 中某个字符串出现了多少次

php - 切换订阅 - 直接添加到购物车

php - DB操作,很贵吗?

php - 为什么缓存查询时不缓存关系?

.net - 在模板中填充数据的最佳实践?

PHP PDO 数据库备份类

php - 用户统计。记录 IP 和访问时间戳 : how to calculate stats

java - Maven Build 在 Surefire 测试之间挂起

mysql - 无数据库规范的 Liquibase 调用过程