Marc: Sonderzeichen mit MySQL

Hallo Forum

ich habe eine frage bezüglich dem handling von sonderzeichen.
Wenn ich ein textfeld einlese und dessen inhalt in eine mysql datenbank abspeichere, wende ich zuvor den befehl AddSlashes($text) an, damit alle sonderzeichen insvesondere das Hochkomma umgesetzt werden.
Nun, das nachträgliche Auslesen stellt keine weiteren Probleme dar, ausser wenn ich den Inhalt z.B: "Roger's" als value in ein Textfeld als Vordefinition einfügen möchte. Es wird nur "Roger" dargestellt. Was muss ich hier unternehmen?

Herzlichen Dank
Marc

  1. Hallo Marc,

    Wenn ich ein textfeld einlese und dessen inhalt in eine mysql datenbank abspeichere, wende ich zuvor den befehl AddSlashes($text) an, damit alle sonderzeichen insvesondere das Hochkomma umgesetzt werden.

    Dafür ist eigentlich die Funktion mysql_escape_string() (->http://de3.php.net/mysql_escape_string) gedacht, die maskiert gleich genau die Zeichen die in einem Query "gefährlich" werden könnten.

    [...] Es wird nur "Roger" dargestellt. Was muss ich hier unternehmen?

    uns deinen Code zeigen (zumindest den relevanten Teil davon).

    Grüße aus Nürnberg
    Tobias

    --
    Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
    1. Hallo Tobias

      Danke schon mal!
      Nun, hier mal meinen Code teil, welcher das Textfeld "zusammenbaut":

      Hierbei kommt $fieldData direkt aus der DB...

      function getMyDesign($fieldName,$fieldData,$function)
      {
       if($function!="edit") echo $fieldData;
       else
       {
        echo "<input type=text name='$fieldName' ";
        echo "style='font-family:Verdana;font-size:8pt;background-color:#ffffff;border-style:solid;border-width:1px;height:18px;width:180px'";
        echo " value='$fieldData'>";
       }
      }

      Grüsse aus Zürich

      1. Hallo Marc,

        echo " value='$fieldData'>";

        da haben wir den Übeltäter ja schon :-)
        Schau dir mal den Quellcode an der im Browser ankommt, wenn in $fieldData "Roger's" drinsteht - richtig, da steht dann
        ...value='Roger's'>
        und woher soll der Brower wissen, an welchem ' der Wert zu Ende ist? Du solltest besser nicht ' sondern " zum Umschließen der Werte verwenden und http://de.php.net/htmlspecialchars auf den Wert loslassen (bzw. htmlspecialchars() mit ENT_QUOTES verwenden). Deine Zeile oben könnte dann also so aussehen:

        echo ' value="'.htmlspecialchars($fieldData).'">';

        dann kann eigentlich nichts mehr schiefgehen (zudem ist echo '...' auch noch schneller als echo "...")

        Grüße aus Nürnberg
        Tobias

        --
        Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
        1. Super!

          Herzlichen Dank, du hast mir sehr geholfen!

          Grüsse, Marc

  2. Hallo Marc,

    da setz Dich mal mit Obelix [pref:t=61507&m=346955] auseinander. Der ist da schon zwei Runden weiter als Du. Alles nochmal zu schreiben, ist mir dann zu müßig. :-)

    Liebe Grüße

    Tom