DB speichert keine Anführungszeichen

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

  • DB speichert keine Anführungszeichen

    Hallo,

    ich speicher/lade meine Daten ganz normal mittels mysql_query(), bei der Speicherung zusätzlich noch mysql_real_escape_string().

    Sofern ein User nun irgendeinen Text eingibt und in diesem Anführungszeichen vorhanden sind, speichert es in der Datenbank den jeweiligen String nur bis zum Anführungszeichen.

    Muss ich jetzt ernsthaft noch alle Strings VOR der Speicherung mittels addslashes() und beim Laden mit stripslashes() bearbeiten?

    Danke!

  • #2
    Zitat von Truncate Beitrag anzeigen
    Muss ich jetzt ernsthaft […]
    … das Problem nachvollziehbar beschreiben?

    Ja, musst du. Mit den bisher vorliegenden Informationen kann dir nämlich niemand sagen, was du falsch gemacht hast.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Zitat von wahsaga Beitrag anzeigen
      … das Problem nachvollziehbar beschreiben?

      Ja, musst du. Mit den bisher vorliegenden Informationen kann dir nämlich niemand sagen, was du falsch gemacht hast.
      Naja was soll ich da noch groß dazu schreiben?

      Ich speichere Formulardaten unverändert mittels mysql_query() und mysql_real_escape_string() in die DB.

      Kommentar


      • #4
        Und was soll ich dazu jetzt noch groß dazu schreiben?

        Wenn du nicht gewillt bist, mehr Details rauszurücken – dann kann der Thread auch auf den Müll wandern.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Davon abgesehen, dass die mysql_* Funktionen veraltet sind und nicht mehr verwendet werden sollten, ist das Mindesteste, das du posten kannst, ein kurzer Testcode, bei dem das Verhalten nachvollziehbar auftritt. Da eine Datenbank involviert ist, solltest du auch eine Testdatenbank als SQL-Code posten. Alles andere führt nur zu Kaffeesudlesen.

          Du solltest nach 394 Beiträgen langsam mitgekriegt haben, wie ein Programmierforum funktionert.

          Kommentar


          • #6
            Gut, also die Daten kommen unverarbeitet aus einem Formular und werden so gespeichert:

            Code:
            mysql_query("INSERT INTO tabelle (mitarbeiter) VALUES ('".mysql_real_escape_string($_POST['mitarbeiter'])."')");
            Wenn jetzt jemand als Mitarbeiter Alex "Spitzname" Konopka eingibt, dann landet in der Datenbank lediglich Alex.

            Magic Quotes sind natürlich aus...

            Kommentar


            • #7
              Das ist kein vollständiger Testcode.

              So sieht Testcode aus:
              PHP-Code:
              $link mysql_connect('localhost''root''');
              mysql_set_charset('utf8'$link);
              mysql_select_db('test'$link);

              mysql_query('DROP TABLE IF EXISTS `test`'$link);
              mysql_query('
                  CREATE TABLE `test` (
                    `id` int(11) NOT NULL AUTO_INCREMENT,
                    `mitarbeiter` varchar(255) NOT NULL,
                    PRIMARY KEY (`id`)
                  ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
              '
              $link);

              $value 'Alex "Spitzname" Konopka';

              mysql_query("
                  INSERT INTO test (mitarbeiter)
                  VALUES ('" 
              mysql_real_escape_string($value$link) . "')
              "
              $link); 
              Und wenn wir jetzt in die Datenbank schauen, sehen wir folgendes:
              Code:
              mysql> SELECT * FROM test;
              +----+--------------------------+
              | id | mitarbeiter              |
              +----+--------------------------+
              |  1 | Alex "Spitzname" Konopka |
              +----+--------------------------+
              1 row in set (0.00 sec)
              Also entweder enthält $_POST['mitarbeiter'] nicht das, das du denkst, das es enthält, oder du verheimlichst relevanten Code.
              Zuletzt geändert von h3ll; 12.11.2015, 19:44.

              Kommentar


              • #8
                Zitat von Truncate Beitrag anzeigen
                dann landet in der Datenbank lediglich Alex.
                Und das hast du mit phpMyAdmin oder einem anderen DB-Frontend überprüft?
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  Also in der DB wird es richtig gespeichert, ABER wenn man es wieder in einem Inputfeld ausgibt wird es verstümmelt:

                  Code:
                  <input name=mitarbeiter value="Alex "Spitzname" Konopka">
                  Wie handhabt man sowas? value=' ... ' benutzen? Aber dann spackt er ja sicherlich auch wieder rum wenn jemand irgendwo ' eingibt.

                  Kommentar


                  • #10
                    Also ein ganz anderes Problem, das überhaupt nichts mit der Datenbank zu tun hat. Und das erwähnst du erst im 9. Post vom Thread...

                    Du beachtest den Kontextwechsel zu HTML nicht. Werte, die du in HTML-Code einfügst, müssen immer mit htmlspecialchars() maskiert werden.

                    Kommentar


                    • #11
                      Zitat von Truncate Beitrag anzeigen
                      Also in der DB wird es richtig gespeichert, ABER wenn man es wieder in einem Inputfeld ausgibt wird es verstümmelt:

                      Code:
                      <input name=mitarbeiter value="Alex "Spitzname" Konopka">
                      Siehst du, hat also absolut nichts mit dem Einfügen in die Datenbank zu tun.

                      Wie handhabt man sowas?
                      https://wiki.selfhtml.org/wiki/Progr...Kontextwechsel
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar

                      Lädt...
                      X