Php 自动执行MySQL查询以创建列表

Php 自动执行MySQL查询以创建列表,php,mysql,Php,Mysql,我不是向用户显示所有可用属性的列表,而是尝试向他们显示他们尚未保存到帐户中的所有属性。我将用户保存的属性记录在数据库的一个表中,我通过属性的id和用户的id进行记录 所以我想写一个如下的查询 $query=“从id!=1或3的属性中选择*” 然后,这将选择id为2的属性,并将其显示给用户,而不是用户已经看到并保存了1和3的1、2和3的列表 问题 上面写的这个查询似乎不起作用。它仍然显示所有的属性,我不知道为什么 编辑: 实际问题 现在它不会显示剩余的属性。上面的查询不显示预期的属性1或3,但现

我不是向用户显示所有可用属性的列表,而是尝试向他们显示他们尚未保存到帐户中的所有属性。我将用户保存的属性记录在数据库的一个表中,我通过属性的
id
和用户的
id
进行记录

所以我想写一个如下的查询

$query=“从id!=1或3的属性中选择*”

然后,这将选择id为2的属性,并将其显示给用户,而不是用户已经看到并保存了1和3的1、2和3的列表

问题

上面写的这个查询似乎不起作用。它仍然显示所有的属性,我不知道为什么


编辑:

实际问题


现在它不会显示剩余的属性。上面的查询不显示预期的属性1或3,但现在也不显示属性2

SQL不是这样工作的。您试图在SQL语句中使用PHP“notequal”。您必须为正在使用的数据库使用正确的SQL。它应该看起来更像这样:

$query = "SELECT * FROM propertys WHERE id <> 1 OR id <> 3"  

如果我有一个可用值1、2和3的属性行源(如问题中所述),例如

我还有第二个表,其中包含“分配”给每个用户的属性行。。。每行表示分配给用户的属性,“缺失”行表示未分配的属性,例如

 user_assigned_property
 user_name  property_id 
 -------    -----------
 jack       1
 jack       3
 giant      3
 giant      4
我可能会使用一种反连接模式:从属性返回所有行,并将外部连接到指定的属性,在where子句中设置一个条件以排除存在匹配项的所有行

我们预计:

SELECT p.id
     , p.name
  FROM property p 
  LEFT
  JOIN user_assigned_property a
    ON a.property_id = p.id
   AND a.user_name = 'jack'
 WHERE a.property_id IS NULL
 ORDER
    BY p.id
返回:

id  name
--  ----
 2  fi
 4  fum

至少我找到了答案。从那时起,问题是试图为多个排除使用写入语法。谢谢大家的帮助

您需要在每次比较中包含该列
$query=“SELECT*FROM propertys WHERE id!=1 and id!=3
或使用
not in
$query=“SELECT*FROM propertys WHERE id no in(1,3)”
我不确定您是否编写了正确的语法,先生,请看一下:我的第二个查询有一个输入错误,
$query=“SELECT*FROM propertys WHERE id not in(1,3)“
id 1或id 3
是错误的逻辑,
not 1
将返回3,
not 3
将返回
1
。您需要
=
也可以工作(虽然我不确定这是否兼容,但我倾向于使用
)。@chris85也可以写同样的东西。谢谢你的帮助,我实际上发现我可以使用,而不是在(1,2)中,它工作了!谢谢你的帮助。
=
是有效的MySQL“不相等”符号。
SELECT p.id
     , p.name
  FROM property p 
  LEFT
  JOIN user_assigned_property a
    ON a.property_id = p.id
   AND a.user_name = 'jack'
 WHERE a.property_id IS NULL
 ORDER
    BY p.id
id  name
--  ----
 2  fi
 4  fum