LIKE Statement Problem Umlaute

Moin zusammen,
und zwar bin ich auf folgendes Problem gestoßen, dass das LIKE Statement in Sql leider die Umlaute ignoriert. Das sieht in der Praxis so aus, dass bei meiner Suche Leinöl und Leinol die gleichen Treffer geben und das ist in meinem Fall ziemlicher mist. Auch ß wird als s erkannt.
Wie bekomme ich es hin das bei meiner Suche einzelne Buchstaben in einem Wort gefunden werden, aber gleichzeitig Umlaute berücksichtigt werden? Vielen Dank!
Lg
Freshmojojo

Hallo,

das hat nichts mit LIKE zu tun, sondern was mit der Datenbank, las raten datenbank utf8_general_ci?

Vielleicht utf8_unicode_ci mal probieren.

Cheffchen

Nein, ich habe schon alles durchprobiert soweit und ich habe die DB auf utf8_unicode_ci. Oder muss ich im php Dokument selber den Begriff mit dem ich Vergleichen will umwandeln? Danke!

Probieren würde ich da nicht herum. Ich würde dir raten genau zu schauen was Du aktuell als Zeichensätze verwendest. Also:

  • alle verwendeten Dateien müssen den selben Zeichensatz haben
  • die Datenbankverbindung muss den selben Zeichensatz haben
  • die Datenbank muss den selben Zeichensatz haben
  • die Datenbanktabellen müssen den selben Zeichensatz haben
  • die Datenbankspalten müssen den selben Zeichensatz haben
  • der eingegebene String muss ebenfalls den gleichen Zeichensatz haben

Falls sich irgendetwas dort unterscheidet, pass es entsprechend an.

[PHP]$sql = „SELECT * FROM „.$tabelle.“ WHERE product_name LIKE ('%“.$mysqli->real_escape_string($begriff).„%') LIMIT 5“;[/PHP]
Das hier ist meine Abfrage. Wobei man sich der Begriff zB so definiert sein könnte:
[PHP]$begriff = utf8_decode($_POST[„suchbegriff“]);[/PHP]

Ok, und das hilft jetzt wie weiter? Kontrolliere bitte die Punkte aus meiner o.g. Liste.

Ich habe alles überprüft habe beide Dokumente(sowohl die Hauptdatei als auch auch die DB Connection auf UTF-8 ohne BOM). Meine DB an sich ist in utf8_unicode_ci. Die Tabelle ist in utf8_unicode_ci. Und auch die Spalte aus der ich es auslesen möchte ist in utf8_unicode_ci. Wie genau bekomme ich nun den String auf das Format dass ich ihn vergleichen kann? Oder mach man das schon mit utf8decode?

Tut mir leid ich wollte nur einen Überblick verschaffen. Kann ja sein, dass ich noch irgenwie einen Fehler im Code habe.

Das mit dem ß und den anderen Sonderzeichen wie „§$?“ bis auf „&“. Funktionieren schonmal :slight_smile: Ich bin aber immernoch der Meinung das Like die Umlaute verschluckt. Oder irre ich mich da?

Wenn alles utf8 ist darfst du kein utf8_decode verwenden.