Php 选择不等于关联数组键的多个值的位置

Php 选择不等于关联数组键的多个值的位置,php,mysql,select,associative-array,Php,Mysql,Select,Associative Array,我做了三张桌子 Table1=users。列名为userid(自动递增)和username 表2=爱好。列名为hobbyid(自动递增)和hobbyname 表3=用户爱好。列名是FK_userid和FK_hobbyid 现在,hobbyname拥有板球、足球、排球 在注册过程中,用户仅选择板球和足球,我将其存储在$\u会话['hobby\u id']关联数组中 但在个人资料中,他/她想增加一些爱好 因此,我想显示不等于$\u SESSION['hobby\u id']的爱好列表 这当然不起作用

我做了三张桌子

Table1=users。列名为userid(自动递增)和username
表2=爱好。列名为hobbyid(自动递增)和hobbyname
表3=用户爱好。列名是FK_userid和FK_hobbyid

现在,hobbyname拥有板球、足球、排球
在注册过程中,用户仅选择板球和足球,我将其存储在$\u会话['hobby\u id']关联数组中

但在个人资料中,他/她想增加一些爱好

因此,我想显示不等于$\u SESSION['hobby\u id']的爱好列表

这当然不起作用:

foreach($_SESSION['hobby_id'] as $k=>$v)
{

  $query="select hobbyid,hobbyname from hobbies where hobbyid!= $v";
}  
Output was football,volleyball and cricket,volleyball....but i wanted only volleyball
所以我想要这个

$query="select hobbyid,hobbyname from hobbies where hobbyid!=(multiple values of session hobby id)";

我必须输入什么代码才能获得所需的结果(仅排球)

删除
foreach
循环,并在MySQL中使用
NOT IN
比较:

$query="
    SELECT hobbyid,hobbyname
    FROM hobbies
    WHERE hobbyid NOT IN (" . implode(',', $_SESSION['hobby_id']) . ")
";

工作得很有魅力!。。当$\u会话['hobby\u id']为空时出现问题,但我使用简单的if(empty($\u会话['hobby\u id']))解决了这个问题。。。。。。感谢您必须检查变量是否为空,我只给您最后一个查询。但是您必须确保
$\u会话['hobby\u id']
只包含数值(实际上是SQL注入)