Ankündigung

Einklappen
Keine Ankündigung bisher.

Mysql-String prüfen und Umlaute ändern

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Mysql-String prüfen und Umlaute ändern

    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:

    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;
        } 
    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
    Das Recht auf Dummheit gehört zur Garantie der freien Entfaltung der Persönlichkeit.
    Mark Twain

  • #2
    htmlentities() ist hier fehl am Platz. Damit kodierst du - tada HTML Enititäten. Eine Datenbank kennt kein HTML, es kennt nur Daten. Die Ausgabe beschränkt sich ja nicht auf HTML. Denkbar wäre OpenOffice, PDF, Grafiken sogar, ..
    Gut, meistens ist es einzig und allein HTML, aber siehst ja was bei rumkommt, wenn man nicht pure Daten, sondern formatierte Daten in der DB stehen hat.

    Bei mysql_real_escpae_string() musst du beachten, was get_magic_quotes_gpc() liefert. Dazu mehr im Manual oder hier im Forum, das Thema hatten wir schon zur Genüge ..

    Kommentar


    • #3
      Jo ich wusste nicht genau, wonach ich suchen soll. Siehe Titel... Das Problem ist halt merkwürdig. Jo das htmlentities HTML-Entitäten kodiert war mir klar, doch bis anhin wars das was ich im Script brauche. Werde deinen Tip beherzigen und mich mal im Manual zum Thema get_magic_quotes_gpc() umsehen.

      Danke dir.
      Das Recht auf Dummheit gehört zur Garantie der freien Entfaltung der Persönlichkeit.
      Mark Twain

      Kommentar


      • #4
        Schreibe doch die Orginaldaten in die DB und benutze htmlentities() für die Ausgabe. Dafür ist diese Funktion eigentlich da.
        Aber selbst wenn du die Entities in der DB speichen willst, muss das gehen, allerdings musst du dann nicht die Abfrage codieren, sondern nur die entsprechenden Daten (z.B. der Username). Und diese enthalte ja normalerweise keine "><"-Zeichen. Und das muss dannselbstverständlich noch vor dem Aufruf der Funktion geschehen.
        Gruss
        L

        Kommentar

        Lädt...
        X