2012-06-26 16 views
5

私は3つのテーブルを作っていました。連想配列のキーの複数の値と等しくない部分を選択してください

表1の=ユーザー .AND列名がユーザーID(AUTO_INCREMENT)とユーザ名です。
表2 =趣味。列名はhobbyid(auto_increment)とhobbynameです。
表3 = users_hobbies。列名はFK_useridとFK_hobbyidです。

hobbynameクリケット、サッカー、バレーボールを持っています。
サインアップ中にはクリケットとサッカーを選択しますと私はこれを$ _SESSION ['hobby_id']アソシエイティブな配列に保存します。

しかし、プロフィールで彼/彼女はいくつかの趣味を追加したいと思います。

だから、$ _SESSION ['hobby_id']に等しいと等しくない趣味のリストを表示します。

これ、ofcourseの動作しませんでした:

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)"; 

は私が望ましい結果(のみバレーボール)を取得するために入力するためにどのようなコードを持っていることをしたいですか?

答えて

2

foreachループを削除するとMySQLでNOT IN比較ですを使用します!

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

が魅力のように働いたの$ _SESSION [「hobby_id」]は空だったとき...問題があったけど(あれば、私は簡単な使用して、それを解決しました空($ _セッション['hobby_id']))...... ** ** ** ** – Santosh

+0

変数が空でないかどうかを確認する必要があります。しかし、 '$ _SESSION ['hobby_id']'には数値だけが含まれていることが保証されなければなりません(実際にはSQLインジェクション) – rabudde

関連する問題