Hallo Leute
Ich hab ein kleines Problem. Der Titel ist leider nicht sehr treffend aber mir fällt momentan gerade nichts bessers ein:
Ich habe eine Klasse, in welcher meine Mysql-Funktionen sind. Jeder Query landet schlussendlich hier:
Das hat bis anhin gut geklappt, allerdings bekomme ich nun Probleme beim Login-Script:
Da meine User Namen mit Umlauten haben, muss ich das überprüfen. Die Eingabe Mäke ist beispielsweise als Mäke in der Datenbank abgelegt. Jedoch kann ich so keine Vergleichsoperatoren im Query-String benützen, da ein Grösser als (>) in > umgewandelt wird, was logischerweise in einem Error endet.
Ebenfalls habe ichs mit mysql_(real)_escape_string versucht, was auch kein befriedigendes Ergebnis geliefert hat. Aus "SELECT row FROM table WHERE name='row_name'" wurde "SELECT row FROM table WHERE name=\'row_name\'", was dann zu einem Fehler führte.
Hat jemand eine Idee, wie ich die Zeichenumwandlung von Umlaut x zu &xuml; mit gleichzeitiger Nicht-Umwandlung von < und > unter einen Hut bringe? Natürlich könnte ich einfach die Umlaute über str_replace manuel umwandeln. Ist das die einzige Lösung oder kennt ihr da eine gescheitere?
Gruss Igäl
Ich hab ein kleines Problem. Der Titel ist leider nicht sehr treffend aber mir fällt momentan gerade nichts bessers ein:
Ich habe eine Klasse, in welcher meine Mysql-Funktionen sind. Jeder Query landet schlussendlich hier:
PHP-Code:
private function db_query($query_string) {
$query_string = htmlentities($query_string);
$request = mysql_query($query_string)
or die(Mysql::report_error("Query: ".mysql_error()."\n".$query_string));
return $request;
}
Da meine User Namen mit Umlauten haben, muss ich das überprüfen. Die Eingabe Mäke ist beispielsweise als Mäke in der Datenbank abgelegt. Jedoch kann ich so keine Vergleichsoperatoren im Query-String benützen, da ein Grösser als (>) in > umgewandelt wird, was logischerweise in einem Error endet.
Ebenfalls habe ichs mit mysql_(real)_escape_string versucht, was auch kein befriedigendes Ergebnis geliefert hat. Aus "SELECT row FROM table WHERE name='row_name'" wurde "SELECT row FROM table WHERE name=\'row_name\'", was dann zu einem Fehler führte.
Hat jemand eine Idee, wie ich die Zeichenumwandlung von Umlaut x zu &xuml; mit gleichzeitiger Nicht-Umwandlung von < und > unter einen Hut bringe? Natürlich könnte ich einfach die Umlaute über str_replace manuel umwandeln. Ist das die einzige Lösung oder kennt ihr da eine gescheitere?
Gruss Igäl
Kommentar