自动化MySQL查询以创建列表

时间:2017-04-20 21:56:50

标签: php mysql

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

所以我想写一个像

这样的查询

$query = "SELECT * FROM propertys WHERE id != 1 or 3";

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

问题

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

编辑:

实际问题

现在它不会显示遗留的属性。上面的查询不显示属性1或3,这是有意的,但现在也不显示属性2.

3 个答案:

答案 0 :(得分:0)

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

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

或者这个:

$query = "SELECT * FROM propertys WHERE id NOT LIKE 1 OR id NOT LIKE 3"  

答案 1 :(得分:0)

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

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Firebase Test</title>
    <script src="https://www.gstatic.com/firebasejs/3.8.0/firebase.js"></script>
    <script>
        // Initialize Firebase
        var config = {
            // your configs
        };
        firebase.initializeApp(config);
    </script>
</head>
<body>
    <input type="file" id="file" name="datafile">
    <script>
        function fileChange(ev) {
            var target = ev.target;
            var file = target.files[0];
            var storageRef = firebase.storage().ref();
            var thisRef = storageRef.child("public/" + file.name);
            thisRef.put(file).then(function (snapshot) {
                console.log('Uploaded a blob or file!');
            });
        }
        var inputFile = document.getElementById('file');
        inputFile.addEventListener('change', fileChange, false);
    </script>
</body>
</html>

我有一个第二个表,其中包含为每个用户“分配”的属性的行,...每行代表分配给用户的属性,“缺失”行代表不属性的属性已分配,例如

 property
 id  name
 --  -------
  1  foo
  2  fi
  3  fo
  4  fum

我可能会使用反连接模式:从属性返回所有行,使用外部连接返回指定的属性,以及where子句中的条件,以排除存在匹配的所有行

我们希望如此:

 user_assigned_property
 user_name  property_id 
 -------    -----------
 jack       1
 jack       3
 giant      3
 giant      4

返回:

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

答案 2 :(得分:0)

我至少找到了答案。从Here问题是尝试使用多个排除的写入语法。谢谢大家的帮助。