5

3つのテーブルを作りました。

Table1=users。列名はuserid (auto_increment) とusernameです。
Table2=趣味。列名はHobbyid (auto_increment) とHobbynameです。
Table3=users_hobbies . 列名は FK_userid と FK_hobbyid です。

現在、趣味名にはクリケット、サッカー、バレーボールがあります。
サインアップ時に、ユーザーはクリケットとフットボールのみを選択し、それを$_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)";

望ましい結果を得るには、どのコードを入力する必要がありますか(バレーボールのみ) ?

4

1 に答える 1

2

foreachループを削除NOT INし、MySQL で比較を使用します。

$query="
    SELECT hobbyid,hobbyname
    FROM hobbies
    WHERE hobbyid NOT IN (" . implode(',', $_SESSION['hobby_id']) . ")
";
于 2012-06-26T06:24:05.910 に答える