【问题标题】:Select where not equal to multiple values of keys of associative array选择不等于关联数组键的多个值的地方
【发布时间】:2012-06-27 10:31:43
【问题描述】:

我做了三张桌子。

Table1=users。列名是userid(auto_increment)和username
Table2=hobbies。列名称为 hobbyid (auto_increment) 和 hobbyname
Table3=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)";

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

【问题讨论】:

    标签: php mysql select associative-array


    【解决方案1】:

    删除foreachloop并在MySQL中使用NOT IN比较:

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

    【讨论】:

    • 就像一个魅力!.. 当 $_SESSION['hobby_id'] 为空时出现问题,但我通过使用简单的 if(empty($_SESSION['hobby_id'])) 解决了它。 ..... 谢谢
    • 当然你要检查变量是否不为空,我只给你最后的查询。但是您必须确保 $_SESSION['hobby_id'] 仅包含数值(实际上是 SQL 注入)
    猜你喜欢
    • 2012-02-08
    • 1970-01-01
    • 1970-01-01
    • 2021-09-18
    • 1970-01-01
    • 1970-01-01
    • 2014-04-20
    • 2021-03-25
    • 1970-01-01
    相关资源
    最近更新 更多