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

时间:2012-06-26 06:18:34

标签: php mysql select associative-array

我做了三张桌子。

表1 =用户。列名称为用户ID (auto_increment)和用户名
表2 =爱好即可。列名称为 hobbyid (auto_increment)和 hobbyname
表3 = users_hobbies 即可。列名是FK_userid和FK_hobbyid。

现在 hobbyname 板球,足球,排球
在注册期间,用户仅选择板球和足球,并将其存储在 $ _ SESSION ['hobby_id'] 关联数组中。

但在个人档案中,他/她想要增加一些爱好。

所以我想显示不相等的爱好列表到$ _SESSION ['hobby_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)";

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

1 个答案:

答案 0 :(得分:2)

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

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