Auf Anhieb fällt mir auf, dass die Anführungszeichen falsch gesetzt sind. '%' statt '% oder %'.
Hallo!
Aus der Abfrage geht vielleicht hervor, dass ich in einem konkatenierten String mit Sprachbezeichnungen eine Sprache suche die entweder in "suche_sprache1", "suche_sprache2" oder "suche_sprache3" gespeichert sein kann. Allerdings kann es vorkommen, dass z.B. suche_sprache2 NULL ist.
Und genau hier liegt das Problem: LIKE liefert in so einem Fall laut Referenz 1 (TRUE) wenn ich das richtig verstanden habe. Demnach wird ein Datensatz aufgrund von NULL gefunden, der eigentlich nicht den Kriterien entspricht, zumindest interpretiere ich das aus den Ergebnissen. Experimente mit IS NOT NULL u.ä. habe ich in allen Varianten ausprobiert die mir eingefallen sind, leider ohne Erfolg. Vorübergehend habe ich sichergestellt, dass die Felder nicht NULL sind, dann bekomme ich Ergebnisse wie erwartet.
Kann mir hier jemand weiterhelfen? Was mache ich falsch? Gibt es elegantere Lösungen?
Danke im VorausPHP-Code:$sql = "SELECT id, vorname, nachname, CONCAT_WS(', ',muttersprache1, muttersprache2, muttersprache3) AS muttersprachen
FROM anfragen
WHERE id!=".$row['id']."
HAVING muttersprachen LIKE '%".$row['suche_sprache1']."%'
OR muttersprachen LIKE '%".$row['suche_sprache2']."%'
OR muttersprachen LIKE '%".$row['suche_sprache3']."%'";
Auf Anhieb fällt mir auf, dass die Anführungszeichen falsch gesetzt sind. '%' statt '% oder %'.
A programmer is just a tool which converts caffeine into code.
Du wirst nicht drumrum kommen das vorher abzufangen
$search1 = $row['suche_sprache1'] ? $row['suche_sprache1'] : 'XXX_NOT_FOUND_XXX';
etc
TYPO3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)