Sonderzeichen in Datenbank

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

  • Sonderzeichen in Datenbank

    Ich zerbrech mir gerade den Kopf wie man folgendes Lösen kann.

    Ich habe ein Formular mit einem Eingabe Feld mit 255 Zeichen.

    Und in der DB hat ja die dazugehörige Spalte auch 255 Zeichen und ist ein Varchar Feld.

    Allerdings werden Umlaute, Sonderzeichen und so.. umgewandelt.

    Dann sind es aber nicht mehr 255 Zeichen, sondern mehr.

    Und was größer als 255 Zeichen ist, würd ja nicht gespeichert, also gehen
    ja dann die Daten verlohren.

    Es gibt zwar solche Möglichkeit:
    http://www.php-resource.de/forum/sho...=Sonderzeichen

    Allerdings müßte man es ja dann immer nur mit einem Zeichen ersetzen, damit man nicht über 255 Zeichen kommt.

    Oder sollte man denn kein MySQL Varchar sondern ein MySQL Text Feld verwenden? Das wäre ja langsamer.
    Gut geraten ist halb gewußt.

  • #2
    warum speicherst du nciht einfach die daten in der db 1:1 ab?

    du brauchst das ja nur bei der ausgabe umwandeln, z.b. htmlentities() o.ä.
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Ja, stimmt.

      Aber ich benutze auch mysql_escape_string.
      Und mach aus \" uns so. Das heißt \ ist ja 1 Teichen zuviel.

      ?
      Gut geraten ist halb gewußt.

      Kommentar


      • #4
        Original geschrieben von martinm79
        Aber ich benutze auch mysql_escape_string.
        Und mach aus \" uns so. Das heißt \ ist ja 1 Teichen zuviel.

        ?
        nein, bei mysql_real_escape_string (was übrigens besser ist, aber ich glaub das gilt auch für mysql_escape_string), werden die \ nicht in der Datenbank gespeichert!

        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
        Wie man Fragen richtig stellt

        Kommentar


        • #5
          Na bei mir stehen aber denn \ in der db und ich müßte die ausgabe normal mit stripslashes() durch gehen. Also werden die \ schon mit gespeichert.
          Gut geraten ist halb gewußt.

          Kommentar


          • #6
            ich kenne zwar deinen code nicht. aber sorg doch einfach dafür, dass die escapes nicht gespeichertwerden. Wozu auch? Das macht dir ohnehin deine ganzen Daten kaputt.

            Schon ist das Problem gelöst.

            Escapen sollte man nur da, wo es sinn macht!

            Kommentar


            • #7
              Von welchen Faktoren hängt denn das ab, ob die Escapes gespeichert werden oder nicht?

              Wußte ja nicht das man das beeinflussen kann.
              Gut geraten ist halb gewußt.

              Kommentar


              • #8
                Original geschrieben von martinm79
                Von welchen Faktoren hängt denn das ab, ob die Escapes gespeichert werden oder nicht?

                Wußte ja nicht das man das beeinflussen kann.
                du vermischt grade magic_quotes mit mysql_real_escape_string....die Sachen von mysql_real_escape_string werden nicht gespeichert, aber durch magic_quotes (wenn die an sind) kommen die Daten schon geslashed an dein Skript.
                Such mal in der PHP-Manual nach magic_quotes!

                Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                Wie man Fragen richtig stellt

                Kommentar


                • #9
                  Ja, und ich glaube ich habe die " bei mit zweimal escapte...
                  weil magic_quotes bei mir on ist und ich auch mysql_escape_string benutzt hatte.

                  Ganz unten im 1. Beitrag von Abraxax, ist glaube ich, das was ich suche...
                  bzw was in die Richtung geht....
                  PHP-Code:
                  if (!magic_quotes_runtime()) 
                  http://www.php-resource.de/forum/sho...ighlight=query

                  Ich hatte das bis JETZT nur so angewendet:
                  PHP-Code:
                      foreach ($array as $schluessel => $wert) {
                          
                  $array[$schluessel] = mysql_escape_string($wert);
                      } 
                  Damit dürfte wohl alles geklärt sein.
                  Danke
                  Gut geraten ist halb gewußt.

                  Kommentar


                  • #10
                    Original geschrieben von martinm79
                    PHP-Code:
                    if (!magic_quotes_runtime()) 
                    yep, das ist gut...aber wenn du jetzt explizit darauf achtest, würde ich wenn möglich das Zeug in der Konfig abschalten...ich persönlich finde den Müll furchtbar

                    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                    Wie man Fragen richtig stellt

                    Kommentar


                    • #11
                      kleiner tipp noch .....

                      magic_quotes_runtime() [color=red]!=[/color] magic_quotes_gpc()
                      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                      Kommentar


                      • #12
                        Original geschrieben von martinm79

                        bzw was in die Richtung geht....
                        Gut geraten ist halb gewußt.

                        Kommentar


                        • #13
                          das sind zwei paar schuhe ...
                          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                          Kommentar

                          Lädt...
                          X