Vinzenz Mai: Probleme mit Umlauten bei Suche in SQL-DB

Beitrag lesen

Hallo,

ich habe eine mySQL Datenbank. Mit php will ich sie von meiner Seite dynamisch auf bestimmte Begriffe durchsuchen (diese werden per $_GET übergeben und in ein Array geschrieben). Hier ist der SQL-Befehl ($kat[$a] ist das Array)

$sql = 'SELECT * FROM rechnung WHERE Kat LIKE CONVERT(_utf8 ''.$kat[$a].'' USING latin1) COLLATE latin1_swedish_ci';

dieses Konstrukt sieht wüst aus und enthält einen elementaren Fehler.

Der elementare Fehler:
Benutzereingaben sind gemäß dem Kontext zu behandeln, in dem sie verwendet werden. Hier ist das der Kontext MySQL, also verwende mysql_real_escape_string(). Gegebenenfalls solltest Du zu Beginn Deines Skriptes die unsäglichen Magic Quotes eliminieren (falls Du Dich auf die verlässt), siehe entsprechender Link auf der verlinkten Handbuchseite.

Zum Rest:
Du solltest wissen, in welcher Kodierung Deine Daten in der entsprechenden Spalte gespeichert sind. Verwende diese Kodierung, um die Daten abzufragen. Konvertiere nicht wild umher.

Freundliche Grüße

Vinzenz