Dachdeckermeister: mySQL "?" im Datensatz wird zu "NULL"...

...ist ja einigermaßen logisch, aber wie kann ich das verhindern?

mfG Markus

  1. ...ist ja einigermaßen logisch, aber wie kann ich das verhindern?

    Warum soll das logisch sein?

    -v

    Gruß
      Christian

    1. ...ist ja einigermaßen logisch, aber wie kann ich das verhindern?

      Warum soll das logisch sein?

      Weil da steht: blabla?irgendewas, und das ? im allgemeinen als Operator gesehen wird. daher denk ich wird es auch als solcher verarbeitet

      -v

      -v? wie soll ich das deuten?

      Gruß
        Christian

      1. Weil da steht: blabla?irgendewas, und das ? im allgemeinen als Operator gesehen wird. daher denk ich wird es auch als solcher verarbeitet

        Wo steht das?

        -v? wie soll ich das deuten?

        Damit habe ich die aufordern wollen wortreicher zu sein. Versuch dich mal in unsere Lage zu versetzen, Du bist an dem Problem wahrscheinlich schon eine Zeit lang dran, wir aber nicht deshalb brauchen wir mehr Information um dein Problehm überhaupt zu sehen.

        So kann ich dir nur ein RTFM gebeben.

        3.3.4.6 Working with NULL Values
        http://www.mysql.com/doc/en/Working_with_NULL.html

        A.5.3 Problems with NULL Values
        http://www.mysql.com/doc/en/Problems_with_NULL.html

        Gruß
          Christian

        1. Hi again...

          -v? wie soll ich das deuten?

          Damit habe ich die aufordern wollen wortreicher zu sein. Versuch dich mal in unsere Lage zu versetzen, Du bist an dem Problem wahrscheinlich schon eine Zeit lang dran, wir aber nicht deshalb brauchen wir mehr Information um dein Problehm überhaupt zu sehen.

          OK, das mySQL Manual hab ich mir natürlich auch schon reingezogen, bin aber weder dort, noch im Forumarchiv fündig geworden.
          Also mein Problem mal etwas näher erläutert.
          Ich möchte über ein PerlScript ein HTML-Formular in eine Datenbank Tabelle ablegen. Ist ja auch nix weiter neues. Um die Formulardaten auszulesen nutze ich das Modul CGI. Nun ist ja klar, das in Textfeldern etc. auch mal ein "?" stehen kann, was in meinem Fall von der Datenbank zu "NULL" verunglimpft wird. Einfach alle "NULL"'s beim lesen zu "?" zu machen ist ja nun auch nicht der Bringer. Es könnte ja auch mal wirklich "NULL" gemeint sein.
          Ich hab wie weiter oben auch schon probiert mittels RegExp das ? zu ? umzubauen (~s /?/\?/g;) Der Versuch schlug jedoch fehl, und das Verhalten war nach wie vor das gleiche.
          Auf dem weg bin ich jetzt auf %3F gestoßen, was zwar funktioniert, aber mit dessen Lösung ich aber recht unglücklich bin. :-/

          Hoffe so findest Du jetzt besser rein.

          mfG Markus

          1. Moin!

            Ich kann das Problem nicht nachvollziehen:

            mysql> insert into test set Text='?';
            Query OK, 1 row affected (0.02 sec)

            mysql> select * from test;
            +----+-----------------+
            | id | Text            |
            +----+-----------------+
            |  1 | Ein  Text       |
            |  2 | Noch ein Text.  |
            |  3 | ?               |
            +----+-----------------+
            3 rows in set (0.00 sec)

            Ganz offensichtlich geht es also. Könnte es sein, daß Du vergessen hast den Value in Anführungsstriche zu packen?

            MFFG (Mit freundlich- friedfertigem Grinsen)

            fastix®

            --
            Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
            1. Moin!

              Re Moin...

              Ich kann das Problem nicht nachvollziehen:

              Ich auch nicht :-)

              mysql> insert into test set Text='?';
              Query OK, 1 row affected (0.02 sec)

              mysql> select * from test;
              +----+-----------------+
              | id | Text            |
              +----+-----------------+
              |  1 | Ein  Text       |
              |  2 | Noch ein Text.  |
              |  3 | ?               |
              +----+-----------------+
              3 rows in set (0.00 sec)

              Ganz offensichtlich geht es also. Könnte es sein, daß Du vergessen hast den Value in Anführungsstriche zu packen?

              Also:
              ich nehm halt einen Scalar $irgendwas dessen Inhalt zum Beispiel "Hallo wie gehts?" ist.
              Dann erzeuge ich das DB-Query wie folgt:
              $query = "INSERT INTO table text VALUES ('$irgendwas')";
              und gebe es mit
              $dbh->do($query);
              an die Datenbank weiter.
              und dann steht im Datenbankfeld 'text' "Hallo wie gehtsNULL"

              wieso nur?

              MFFG (Mit freundlich- friedfertigem Grinsen)

              fastix®

              MUFG (mit unverschämt fetten Grüßen)
                Markus

              1. Hi ,

                Also:
                ich nehm halt einen Scalar $irgendwas dessen Inhalt zum Beispiel "Hallo wie gehts?" ist.
                Dann erzeuge ich das DB-Query wie folgt:
                $query = "INSERT INTO table text VALUES ('$irgendwas')";

                Was kommt raus wenn du hier mal $query ausgeben läst?

                und gebe es mit
                $dbh->do($query);
                an die Datenbank weiter.
                und dann steht im Datenbankfeld 'text' "Hallo wie gehtsNULL"
                wieso nur?

                Es scheint aber ofensichtlich kein mysql Problem zu sein. Und bei Perl kann ich dir leider nicht helfen.

                Gruß
                  Christian

                1. Hi ,

                  Also:
                  ich nehm halt einen Scalar $irgendwas dessen Inhalt zum Beispiel "Hallo wie gehts?" ist.
                  Dann erzeuge ich das DB-Query wie folgt:
                  $query = "INSERT INTO table text VALUES ('$irgendwas')";

                  Was kommt raus wenn du hier mal $query ausgeben läst?

                  Es kommt 'test?test.test' raus

                  und gebe es mit
                  $dbh->do($query);
                  an die Datenbank weiter.
                  und dann steht im Datenbankfeld 'text' "Hallo wie gehtsNULL"
                  wieso nur?

                  Es scheint aber ofensichtlich kein mysql Problem zu sein. Und bei Perl kann ich dir leider nicht helfen.

                  Gruß
                    Christian

                  1. Moin!

                    Es scheint aber ofensichtlich kein mysql Problem zu sein. Und bei Perl kann ich dir leider nicht helfen.

                    Es ist kein MySQL- Problem.

                    mysql> insert into test set Text='Hallo wie gehts?';
                    Query OK, 1 row affected (0.01 sec)

                    mysql> select * from test;
                    +----+------------------+
                    | id | Text             |
                    +----+------------------+
                    |  1 | Ein langer Text  |
                    |  2 | Noch ein Text.   |
                    |  3 | ?                |
                    |  4 | Hallo wie gehts? |
                    +----+------------------+
                    4 rows in set (0.00 sec)

                    Vermutlich wird es Zeit für etwas Perl- Quelltext. MySQL tut jedenfalls, was es soll, Auch dann, wenn ich die klassische Schreibweise für den insert- Befehl verwende.

                    MFFG (Mit freundlich- friedfertigem Grinsen)

                    fastix®

                    --
                    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
  2. Moin!

    ...ist ja einigermaßen logisch, aber wie kann ich das verhindern?

    "?"

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix®

    --
    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
    1. Moin!

      Moin moin!

      ...ist ja einigermaßen logisch, aber wie kann ich das verhindern?
      "?"

      Hatt' ich mir auch schon gedacht :-/
      aber denken ist ja bekanntlich Glückssache 'ne :)
      Ich hab nun versucht mittels regexp aus dem ? ein ? zu machen, ohne Erfolg.
      Das Einzige was mich etwas weiter gebracht hat ist:
      $scalar =~ s/?/%3F/g;
      Aber leider bin ich mit der Lösung nicht wirklich zufrieden. Noch andere "suggestionen"?

      MFFG (Mit freundlich- friedfertigem Grinsen)

      fastix®

      Thanx, Euer Dachdeckermeister

      1. Moin!

        aber denken ist ja bekanntlich Glückssache 'ne :)

        Glaskugeln auch. Beschreib mal genauer, wann und wie der fehler auftritt.

        MFFG (Mit freundlich- friedfertigem Grinsen)

        fastix®

        --
        Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
        1. siehe hier [pref:t=60839&m=342591]

          mfG Markus

  3. Moin!

    ...ist ja einigermaßen logisch, aber wie kann ich das verhindern?

    "?"
    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix®

    --
    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.