2016-09-21 3 views
-1

Ich habe ein Problem beim Schreiben mySql-Abfrage.Wie vergleicht man die Strings in MySQL Query

Beispiel:

Ich habe zwei Eingabefelder ein.

  1. Title = "leben zu erzählen";
  2. Komponist = "Madonna/Michel Jackson";

In meiner Datenbank-Tabelle enthält die folgenden Datensätze

Tabellenname: SONGS mit Spalten Titel und Komponist

  1. Title = "Live to Tell";
  2. Komponist = "Michel Jackson/Madonna";

Meine Suche:

select * from SONGS 
where title ='Live to Tell' and 
composer ='Madonna/Michel Jackson' 

keine Ergebnisse liefert. Ich habe das Wort im Komponistenfeld ausgetauscht.

Meine Anforderung ist es, es funktioniert, auch wenn wir die Wörter austauschen.

Composer-Gehalt wird durch '/' getrennt

+2

Lesen Sie Ihre Anfrage laut. Wie kann ein Titel sowohl "Live To Tell" als auch "Madonna/Michel Jackson" sein? – Devon

+0

Dies sieht wie ein Job für die Datennormalisierung (unter anderem) aus. Wenn Sie mehrere Werte in einem einzigen Feld speichern, erhalten Sie * einen einzelnen Wert *. – David

Antwort

1

Versuchen Sie, die Zeichenfolge Madonna/Michel Jackson mit PHP-Funktion explode() explodiert. Bevor Sie es in Ihrer Abfrage verwenden.

$composer = explode('/', 'Madonna/Michel Jackson'); 

Dies gibt ein Array in $composer wie folgt aussehen:

array(
    [0] => 'Madonna', 
    [1] => 'Michel Jackson' 
) 

Um einen der Namen wählen Sie verwenden können, $composer[0] or $composer[1]

SELECT * FROM songs WHERE title ='Live to Tell' AND composer LIKE "%$composer[1]%"; 
Verwandte Themen