如何在php中将数据库中的一个值与多个值进行比较?

时间:2016-10-12 09:10:10

标签: php sql

我的问题是我在数据库中有一个字段有多个vaue例如我有一个表名称是用户,其中我有两个字段一个是id而另一个字段是爱好。表结构是这样的: 用户表:

       id      hobbies
    -------- -------------
       1      1,2
       2       2 
       3      2,3
爱好表:

          id      hobbies
    -------- -------------
       1        singing
       2        dancing 
       3        reading

现在我的问题是我希望所有用户从爱好表中跳过id为2的爱好。但是我的查询只是给用户3输出这是错误的,这是我的PHP代码:

    $scheck = $_REQUEST['scheck'];//$scheck is array of hobbies like 1,2
    if (!empty($scheck)) {
            if (strstr($scheck, ',')) {
                $data3 = explode(',', $scheck);
                $sarray = array();
                foreach ($data3 as $c) {
                    $sarray[] = "t1.hobbies = $c";
                }
                $WHERE[] = '(' . implode(' OR ', $sarray) . ')';
                $inner = ' JOIN hobbies AS t3 ON t1.hobbies = t3.id ';
            } else {
                $WHERE[] = '(t1.hobbies = ' . $scheck . ')';
                $inner = ' JOIN hobbies AS t3 ON t1.hobbies = t3.id ';
            }
        }
      $w = implode(' AND ', $WHERE);
      if (!empty($w)) $w = 'WHERE ' . $w;
     $query = mysql_query("SELECT DISTINCT  t1 . * FROM  `users` AS t1 $inner $w

请为我的问题提供一些解决方案。

1 个答案:

答案 0 :(得分:2)

列业余爱好的用户表的数据类型是什么。 我想如果它的varchar然后查询写入将是困难的。

我的建议将为用户和爱好关系创建一个新表,为每个爱好添加多个用户条目。

感谢