Sonderzeichen und PHP incl MySQL ( von einem php-anfänger )

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

  • Sonderzeichen und PHP incl MySQL ( von einem php-anfänger )

    Hallo zusammen,
    also ich habe da ein seltsames Problem. Kann auch daran liegen dass ich ein php-Newbie bin.
    In einem Formularfeld möchte ich einen Text eingeben der später in einer MySQL Datenbank gespeichert werden soll. Das funktioniert, solange bis ich Sonderzeichen eingebe. So zum Beispiel das plus-Zeichen +. Dann wird die Update-Funktion nicht mehr komplett durchgeführt. Wie schaffe ich es, das + Zeichen auch in der DB zu sichern. Zerhaut mir das + Zeichen den SQL-Abfragestring ? Bitte eine kurze Info was da zu machen ist...vielen Dank.

  • #2
    hmm,

    bearbeite den string mit addslashes bevor du ihn in das SQL Query packst und wenn du es ausliest dann benutze den Befehl stripslashes um die Slashes aus dem String wieder zu entfernen.
    so ungefähr :

    $zuspeicherndertext = addslashes($ausformularstring);

    ==> in die SQL DB

    ==> wieder aus der DB raus

    $anzeigetext = stripslashes($dertextstripausderdb);

    Kommentar


    • #3
      ja, das habe ich mir auch schon überlegt. Allerdings steht in meinem php-manual, dass nur bestimmte Zeichen mit dieser Funktion berücksichtigt werden. Nämlich der einfache' und der doppelte" Anführungsstrich, der Rückstrich \ und das NUL-Byte...Leider nicht das +.
      #########################################################
      Auszug aus dem manual:

      AddSlashes -- Stellt bestimmten Zeichen eines Strings einen Backslash "\" (Rückstrich) voran
      Beschreibung:

      string addslashes (string str)

      Gibt einen String (Zeichenkette) zurück, in dem bestimmten Zeichen ein Backslash "\" voran gestellt wurde. Diese Funktion ist z.B. für Datenbankabfragen wichtig. Die behandelten Zeichen sind der einfache und der doppelte Anführungsstrich (' und "), der Rückstrich (\) selbst sowie NUL (das Null-Byte).
      #########################################################

      Gibts vielleicht noch was anderes ?

      Kommentar


      • #4
        du kannst auch jeden Eintrag erstmal kodieren, bevor du ihn in ne DB reinschreibst. So ist es total gleich, was darin vorkommt. Allerdings mußt du beim Auslesen oder Suchen natürlich beachten, daß alles kodiert in der DB steht.

        Kannst du sehr einfach mit urlencode() durchführen. Da werden alle Sonderzeichen in einen Hexadezimal-Code umgewandelt.

        Kommentar


        • #5
          Also addslashes() ist schon mal immer vorteilhaft, aber am + Zeichen sollte es für gewöhnlich nicht scheitern. Gib uns doch mal ein Codebeispiel.

          CAT Music Files

          Kommentar


          • #6
            alles easy....

            Hallo zusammen,
            also ich habe mich gestern abend nochmal ganz intensiv vor die "Kiste" gesetzt. Das Problem ist nicht ganz so wie ich es beschrieben habe; naja und auf die Lösung bin ich dann auch gekommen:

            also es gibt ja 2 Möglichkeiten Variablen an ein anderes script zu übergeben (soweit mir bekannt):

            1. über das Formular ( also die Formularfelder )
            2. beim Aufruf des Scriptes ( z.B: scriptneu.php?variable )

            Wenn im 2. Fall z.B. die Variable "Hänsel+Gretel" ist, kommt das + Zeichen im scriptneu.php nicht an. Es wird "Hänsel Gretel" übermittelt.

            Wenn die Variable "Hänsel+Gretel" als Formularfeld (1. Fall)übertragen wird, klappt alles wunderbar.

            So, das wars - ist merkwürdig, aber so isses.

            Kommentar


            • #7
              Re: alles easy....

              Original geschrieben von Bugman
              [...] ist merkwürdig, aber so isses.
              Hat schon seinen guten Grund, dass das so ist - sonst gäb es leicht Zeichensatzprobleme.


              Lösung:

              echo 'scriptneu.php?variable='.urlencode('variableninhalt');

              CAT Music Files

              Kommentar


              • #8
                ok - danke für die infos.....

                beim nächsten prob bin ich wieder da....

                Kommentar

                Lädt...
                X