2012-06-26 33 views
5

की चाबियों के एकाधिक मानों के बराबर नहीं चुनें, मैंने तीन टेबल बनाए हैं।एसोसिएटिव सरणी

Table1 = उपयोगकर्ताओं .और स्तंभ नाम userid (auto_increment) और उपयोगकर्ता नाम हैं।
तालिका 2 = शौक। कॉलम नाम शौकिया (auto_increment) और शौक नाम हैं।
तालिका 3 = उपयोगकर्ता_ शौक। स्तंभ नाम 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)"; 

क्या कोड मैं वांछित परिणाम (केवल वॉलीबॉल) पाने के लिए दर्ज करनी होगी?

उत्तर

2

foreach पाश को हटाने और NOT IN तुलना का उपयोग MySQL में:

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

एक आकर्षण की तरह काम किया .. वहाँ समस्या थी जब $ _SESSION [ 'hobby_id'] खाली था, लेकिन मैं अगर सरल का उपयोग करके इसे हल (खाली ($ _ सत्र ['शौक_आईडी']) ...... ** धन्यवाद ** – Santosh

+0

निश्चित रूप से आपको यह जांचना होगा कि क्या चर खाली नहीं है, मैं आपको केवल अंतिम क्वेरी देता हूं। लेकिन आपको यह सुनिश्चित करना होगा कि '$ _SESSION ['hobby_id'] 'में केवल संख्यात्मक मान हैं (वास्तव में एसक्यूएल इंजेक्शन के रूप में) – rabudde