Warum findet mySQL keine Einträge mit Umlauten?

2 Antworten

n den entsprechenden Feldern in der Datenbank steht unter "Kollation" überall "utf8_general_ci".

Damit legst Du Kriterien für die Sortierung fest aber nicht für die Suche.

Schick zuerst ein SET NAMES utf8 an die Datenbank, dan sollte es klappen. Mit PDO umgesetzt würd das also so aussehen:

$pdo->query("SET NAMES 'utf8'");

Mit mysqli zum Beispiel so:

mysqli_query($connection,"SET NAMES 'utf8'");

Alex


siliciumcarbid 
Beitragsersteller
 15.01.2020, 15:49

Aha danke, das mit der Sortierung ist gut zu wissen.
Aber SET NAMES zeigt leider keine Wirkung.

0

Puh... wo soll man da Anfangen? :-)

Erst einmal ist es ziemlich kacke Leerzeichen in Pfad und Dateinamen zu haben. Umlaut sind auch nicht so geil. (Ich vermute du bist ein Windows User.)

Dann macht deine SQL Abfrage keinen Sinn. "LIKE" bedeutet das du etwas suchst und einen Teil nicht weißt. Den füllst Du dann mit einem Platzhalter "%". Also z.B. "... WHERE filename LIKE "5 Harry Potter und der Orden%". SQL gibt dir dann alles zurück was mit "5 Harry Potter und der Orden" anfängt. In deinem Beispiel oben sollte man "=" (statt "LIKE") verwenden, da du ja eh den kompletten Namen eingibst.

Warum bekommst du jetzt den Datensatz nicht? Vielleicht ist ein unsichtbares Zeichen im String (Leerzeichen, Line Break, etc.)
Vielleicht ist dein SQL-String falsch (hast du ihn dir schon mal ausgeben lassen?).
Ist die Codierung deiner Seite auch UTF8?
Vielleicht bastelst du so viel überall mit Charsets rum das einfach alles nicht mehr passt. Hast du schon mal versucht die ganze Charset-Bastelei weg zu lassen und es absolut ohne zu probieren?