mixmastertobsi: mysql INSERT Problem

Hallo,

ich habe eine Problem mit MySQL, welches, meiner Meinung nach, nicht erklärbar ist.

Obwohl der INSERT-Befehl immer der selbe ist, kommt es vor, dass manchmal nur ein ein Teil des Strings eingefügt wird. Ich habe schon alles Mögliche probiert - leider ohne Erfolg.

$q = "INSERT INTO temp_html (name,id,html) VALUES ('$name','$id','". mysql_real_escape_string($html)."')";

$res = mysql_query($q);

home_artikel 0 <br class='clear' />
home_artikel 0 <br class='clear' />
home_artikel 0 <br class='clear' />
home_artikel 0 <br class='clear' />
home_artikel 0 <br class='clear' />
home_artikel 0 <div class='produktusicht' title='...
home_artikel 0 <div class='produktusicht' title='...

  1. Hi,

    ich habe eine Problem mit MySQL, welches, meiner Meinung nach, nicht erklärbar ist.

    Dass du uns nachvollziehbar erklärst, wie sich dieses Problem äußert, ist aber Grundvoraussetzung, wenn du hier Hilfe bekommen möchtest. Und diese hast du bisher nicht erfüllt.

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
  2. Hallo,

    Obwohl der INSERT-Befehl immer der selbe ist, kommt es vor, dass manchmal nur ein ein Teil des Strings eingefügt wird.

    Evtl. liegt es am gewählten Feldtyp für "html"?

    Grüße Basti

  3. Hello,

    ich habe eine Problem mit MySQL, welches, meiner Meinung nach, nicht erklärbar ist.

    Obwohl der INSERT-Befehl immer der selbe ist, kommt es vor, dass manchmal nur ein ein Teil des Strings eingefügt wird. Ich habe schon alles Mögliche probiert - leider ohne Erfolg.

    Das Thema hatten wir neulich schon mal.
    Es kann also auch hier an einem Fehler in der Kette der eingestellten Codierungen liegen. Schon die falsch (unvollständig) benutzte Funktion mysql_real_escape_string() deutet darauf hin.

    Hier hat PHP vermutlich nicht die richtige Verbidungskennung erwischt, weil Du ja keine angegeben hast.

    $q = "INSERT INTO temp_html (name,id,html) VALUES ('$name','$id','". mysql_real_escape_string($html)."')";

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. Tach!

      Es kann also auch hier an einem Fehler in der Kette der eingestellten Codierungen liegen. Schon die falsch (unvollständig) benutzte Funktion mysql_real_escape_string() deutet darauf hin.
      Hier hat PHP vermutlich nicht die richtige Verbidungskennung erwischt, weil Du ja keine angegeben hast.

      Nicht übergebene Verbindungskennungen sind für den vorliegenden Fall extrem unwahrscheinlich, zumal eine Verbindung für das anschließende mysql_query() bereits geöffnet sein muss. mysql_real_escape_string() bedient sich dann derer. Auch die Zeichenkodierung auf der Verbindung halte ich nicht für das Problem. Man muss schon mit hierzulande ungebräuchlichen Kodierungen arbeiten, damit das eine Auswirkung auf die von mysql_real_escape_string() bearbeiteten Zeichen hat. Alle behandelten Zeichen liegen nämlich innerhalb des ASCII-Bereichs. Man hat es also mit Byte-Werten zwischen 0 und 127 zu tun. Und diese verwendet zwar mindestens einer der asiatischen Kodierungen, aber keine der relevanten ISO-8859-x oder UTF-8.

      Eine Kodierung könnte meiner Meinung nach nur dann schuld sein, wenn die Verbindung eine einbytige erwartet aber eine mehrbytige bekommt und die Feldlänge zu knapp bemessen ist. Das fällt einem bei UTF-8-Kodierung aber erst bei Umlauten und dergleichen auf die Füße.

      dedlfix.

      1. Hello,

        Eine Kodierung könnte meiner Meinung nach nur dann schuld sein, wenn die Verbindung eine einbytige erwartet aber eine mehrbytige bekommt und die Feldlänge zu knapp bemessen ist. Das fällt einem bei UTF-8-Kodierung aber erst bei Umlauten und dergleichen auf die Füße.

        Das ist ja auch ein interessanter Fall ;-)

        Ich kann mich jetzt leider auch nicht mehr erinnern, in welchem Zusammenhang der andere Thread stand, in dem auch immer Texte abgeschnitten wurden, aber ich meine, Gunnar und Du habt den Fehler gefunden und erklärt.

        Ich kann es im Archiv jetzt aber auch nicht finden. Vielleicht ist der Thread noch aktiv?

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
         ☻_
        /▌
        / \ Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
        1. Tach!

          Eine Kodierung könnte meiner Meinung nach nur dann schuld sein, wenn die Verbindung eine einbytige erwartet aber eine mehrbytige bekommt und die Feldlänge zu knapp bemessen ist. Das fällt einem bei UTF-8-Kodierung aber erst bei Umlauten und dergleichen auf die Füße.
          Ich kann mich jetzt leider auch nicht mehr erinnern, in welchem Zusammenhang der andere Thread stand, in dem auch immer Texte abgeschnitten wurden, aber ich meine, Gunnar und Du habt den Fehler gefunden und erklärt.

          Jetzt wo du das sagst, erinnere ich mich wieder. Wenn UTF-8 vereinbart ist (oder von MySQL als Default erwartet wird), aber bei Bytes größer als 0x7f keine korrekte UTF-8-Sequenz gesendet wird, wird an diesem Byte abgeschnitten. Eine Fehlermeldung kommt keine, aber eine Warnung wird erzeugt, die man sich mit SHOW WARNINGS ausgeben lassen muss: "Incorrect string value ..."

          Mit einer nachvollziehbaren Problembeschreibung könnte man jedenfalls genauer vermuten, was es nun sein könnte.

          dedlfix.

          1. Hello,

            Eine Kodierung könnte meiner Meinung nach nur dann schuld sein, wenn die Verbindung eine einbytige erwartet aber eine mehrbytige bekommt und die Feldlänge zu knapp bemessen ist. Das fällt einem bei UTF-8-Kodierung aber erst bei Umlauten und dergleichen auf die Füße.

            Ich kann mich jetzt leider auch nicht mehr erinnern, in welchem Zusammenhang der andere Thread stand, in dem auch immer Texte abgeschnitten wurden, aber ich meine, Gunnar und Du habt den Fehler gefunden und erklärt.

            Jetzt wo du das sagst, erinnere ich mich wieder. Wenn UTF-8 vereinbart ist (oder von MySQL als Default erwartet wird), aber bei Bytes größer als 0x7f keine korrekte UTF-8-Sequenz gesendet wird, wird an diesem Byte abgeschnitten. Eine Fehlermeldung kommt keine, aber eine Warnung wird erzeugt, die man sich mit SHOW WARNINGS ausgeben lassen muss: "Incorrect string value ..."

            Mit einer nachvollziehbaren Problembeschreibung könnte man jedenfalls genauer vermuten, was es nun sein könnte.

            Klar. Aber wer kommt auf sowas, um dann überhaupt einen beschreibbaren Fehler benennen zu können?
            Auf den ersten Blick merkt man ja eigentlich nur: der Text ist manchmal verstümmelt.

            An welcher Stelle der Übertragungskette der eigentliche Kodierungs(wechsel)fehler jetzt sitzt, weiß man dann meistens auch nicht sofort. Das ist eine ganz schön mühselige Untersuchung :-O

            Liebe Grüße aus dem schönen Oberharz

            Tom vom Berg

            --
             ☻_
            /▌
            / \ Nur selber lernen macht schlau
            http://bergpost.annerschbarrich.de
            1. Tach!

              Mit einer nachvollziehbaren Problembeschreibung könnte man jedenfalls genauer vermuten, was es nun sein könnte.
              Klar. Aber wer kommt auf sowas, um dann überhaupt einen beschreibbaren Fehler benennen zu können?

              Man kann ja wohl den fraglichen Text und das was von ihm übrig bleibt posten, statt etwas Abgekürztem mit drei Punkten. Und man kann Versuche anstellen, bei denen man den richtigen Teil weglässt und nur das eine abgeschnittene Wort verwendet, und fall der Fehler damit auftritt, davon berichten. Das dürfte dann auch kaum noch eventuelle Geschäftsgeheimnisse offenbaren.

              Oder soll der Fehler das produktusicht sein, das eigentlich ein produktuebersicht hätte werden sollen? Oder doch was ganz anderes? Und als Lösungsversuche "schon alles Mögliche probiert" zu nennen, bringt auch niemandem etwas.

              Auf den ersten Blick merkt man ja eigentlich nur: der Text ist manchmal verstümmelt.
              An welcher Stelle der Übertragungskette der eigentliche Kodierungs(wechsel)fehler jetzt sitzt, weiß man dann meistens auch nicht sofort. Das ist eine ganz schön mühselige Untersuchung :-O

              Ich erwarte keine allumfassenden Untersuchungsfähigkeiten, aber etwas mehr Sorgfalt beim Beobachten und Beschreiben darf es ruhig sein.

              dedlfix.