2016-10-12 2 views
1

mein Problem ist ich habe ein Feld in der Datenbank, die mehrere Werte haben zum Beispiel ich habe eine Tabelle, die Name ist Benutzer, in denen ich zwei Feld habe, ist ID und ein anderes Feld ist Hobbys. Tabellenstruktur ist wie folgt: Benutzertabelle:Wie kann ich einen Wert mit mehreren Wert in der Datenbank in PHP vergleichen?

 id  hobbies 
    -------- ------------- 
     1  1,2 
     2  2 
     3  2,3 

Hobbys Tabelle:

  id  hobbies 
    -------- ------------- 
     1  singing 
     2  dancing 
     3  reading 

jetzt mein Problem ist, möchte ich alle Benutzer, die Hobby Tanzen, die id 2 von Hobbys table.but meine Frage ist, gib nur user 3 als ausgabe was ist falsch hier ist mein php code:

$scheck = $_REQUEST['scheck'];//$scheck is array of hobbies like 1,2 
    if (!empty($scheck)) { 
      if (strstr($scheck, ',')) { 
       $data3 = explode(',', $scheck); 
       $sarray = array(); 
       foreach ($data3 as $c) { 
        $sarray[] = "t1.hobbies = $c"; 
       } 
       $WHERE[] = '(' . implode(' OR ', $sarray) . ')'; 
       $inner = ' JOIN hobbies AS t3 ON t1.hobbies = t3.id '; 
      } else { 
       $WHERE[] = '(t1.hobbies = ' . $scheck . ')'; 
       $inner = ' JOIN hobbies AS t3 ON t1.hobbies = t3.id '; 
      } 
     } 
     $w = implode(' AND ', $WHERE); 
     if (!empty($w)) $w = 'WHERE ' . $w; 
    $query = mysql_query("SELECT DISTINCT t1 . * FROM `users` AS t1 $inner $w 

bitte gib mir einige lösungen für mein problem.

+1

Falsche Tabelle Design. Sie sollten Daten nach Zeile einfügen. –

+1

Ja, Sie sollten wirklich eine Zeile haben, die eine Benutzer-ID und die Hobby-ID enthält. Also für einen Benutzer mit 3 Hobbies hättest du 3 Zeilen. Dies würde es auch einfacher machen, ein Hobby von einem Benutzer zu entfernen. – Blinkydamo

+0

Sie können 'ON t1.hobbies = t3.id' nicht beitreten, da t1 mehrere Werte enthält, wobei t3 diese als Ganzzahl enthält. – jitendrapurohit

Antwort

2

Was ist der Datentyp der Benutzertabelle für Spaltenhobbys. Ich denke, wenn sein Varchar dann Abfrage schreiben wird schwierig sein.

Meine Suggestion wird eine neue Tabelle für Benutzer und Hobbys Beziehung erstellen, wo mehrere Einträge von Benutzern für jedes Hobby hinzufügen.

danke

+0

Datentyp der Benutzertabelle für Spaltenhobbies ist varchar (255) –

Verwandte Themen