Kalessin: Sonderzeichen Codierung perl/textarea

Hallo
Bin im bereich datenbank newbie *zugeb*

Alles klappt prima, nur die Sonderzeichen in der "textarea" machen mir kummer.

muß ich den inhalt, wie in alten "im textfiel ableg" zeiten base64 codieren
($key =~ s/(\W)/sprintf("%%%x", ord($1))/eg;)
oder gibts da nen anderen trick, den ich bislang nicht gefunden habe?
ich hatte gehofft, das in der db nicht mehr zu brauchen weil ich ja alles "as is" ablegen kann.

In der Praxis:
+++ schnipp +++
my($query) = "INSERT INTO table (name)
              VALUES ('$name')";
+++ schnapp +++

wenn $name "Markus' Beiträge sind doof" lautet würfelts mich ...

Danke !
(und wenn das jetzt ECHT doof war, dürft ihr mich hauen)

  1. my($query) = "INSERT INTO table (name)
                  VALUES ('$name')";
    +++ schnapp +++

    wenn $name "Markus' Beiträge sind doof" lautet würfelts mich ...

    Ich denke, er hat nur mit dem Hochkomma Probleme, das mußt Du escapen.

    1. wenn $name "Markus' Beiträge sind doof" lautet würfelts mich ...

      Ich denke, er hat nur mit dem Hochkomma Probleme, das mußt Du escapen.

      Ja, genau das ist mein Problem - wie mach ich das?
      Ich kann dem user keine zeichen verbieten
      das problem gibts mit allen quotes ('")

      1. Hallo,

        Ja, genau das ist mein Problem - wie mach ich das?
        Ich kann dem user keine zeichen verbieten
        das problem gibts mit allen quotes ('")

        Wenn Du mit DBI arbeitest (was ich Dir übrigens dringend ans Herz legen will), dann verwende die Funktion quote. Dabei wird der Eingangs-Text einerseits mit den, für die Datenbank notwendigen, Quotingzeichen eingefaßt, und zusätzlich jedes vorkommende Quotingzeichen maskiert. Auch das erfolgt datenbankspezifisch, da es hier durchaus Unterschiede geben kann.
        my($query) = "INSERT INTO table (name)
                      VALUES (".$databasehandle->quote($name).")";

        Es gibt da noch die Möglichkeit mit bind_param zu arbeiten, aber das unterstützt nicht jede Datenbank.

        my($query) = "INSERT INTO table (name)
                      VALUES (?)";

        $statementhandle = $databasehandle->prepare($query);
        $statementhandle->bind_param(1, $value);

        Literaturhinweise:
        perdoc DBI

        Grüße
          Klaus

  2. Danke - das db problem ist gelöst
    (DBI hatte ich vorher schon, aber kein 'quote')

    Nun hab ich noch was ganz billiges ... *rumdrucks*

    wenn ich besagte $var an eine (simple html) ConfirmSeite (sind die angaben richtig?)
    übergeben und dortin einem hidden-tag ablege, habe ch das problem wieder, wenn
    die $var ein Quote (") enthält ...

    ..irgendwie bin webprogrammiermäßig völlig aus er übung und heute
    doof im kopf - es eilt aber

    ...sorry