仅根据特定条件显示记录,如果它们不存在于另一个表中

问题描述 投票:0回答:1

我正在尝试确定如何显示登录用户当前未关注的用户列表。

我有一个用户表和一个称为连接的表。我已经为登录用户$me

设置了一个变量

我正在尝试以下SQL代码,但始终收到错误消息,指出列'3011'不存在。

3011是用户ID(在关注者中)

我的代码是

$people = $this->db->query("SELECT *
from users
WHERE NOT EXISTS
(SELECT following FROM connections c WHERE c.follower = `$me` AND c.following = users.userID)

真的不明白我在做什么错,任何建议都将不胜感激

php sql
1个回答
0
投票

您的代码基本上是正确的,但是您想使用parameters

SELECT u.*
from users u
WHERE NOT EXISTS (SELECT 1
                  FROM connections c
                  WHERE c.follower = ? AND c.following = u.userID
                 );

参数的主题希望您已经知道。如果没有,您需要了解这一点。 PHP documentation是一个合理的起点。

您正在使用的反引号表示将输入值视为列名,这就是为什么会出错的原因。尽管您可以通过消除反引号来解决此问题,但正确的方法是使用参数-既提高性能(缓存查询计划),又使代码更安全。

© www.soinside.com 2019 - 2024. All rights reserved.