Erwin: (ODBC) Seltsame FM

Moin!

Umg.: MS Win98, accessDB und ODBC Treiber, SystemDSN, PERL DBI.

Der folgende Text soll in ein Blobfeld (in access heists Memofeld):

====================================cut==========================
Q: Wie parse ich ein multiple select?

<select name="test" size="6" multiple>
<option value="Test1"> Test1 </option>
<option value="Test2"> Test2 </option>
...
</select>

A: Mit CGI.pm ist das wie folgt zu machen:
use CGI qw(:standard);

@selected_values = param('test');

Dabei liefert die Methode param() alle ausgewählten Werte auf ein Array
im Kontext, 'test' ist der Name des *selects*.
=================================schnapp=========================

Es ergibt sich die FM

====FM=====
DBD::ODBC::db prepare failed: [Microsoft][ODBC Microsoft Access 97 -Treiber] Syntaxfehler (fehlender Operator) in Abfrageausdruck ''Q: Wie parse ich ein multiple select?

<select name="test" size="6" multiple>
<option value="Test1"> Test1 </option>
<option value="Test2"> Test2 </option>
...
</select>

A: Mit CGI.pm ist das wie folgt zu machen:
use CGI qw(:standard);
===============================schnipp============================

Das Statement s.u. an sich wird ausgeführt, andere Inhalte die ich mir aus einer MetaDatei ziehe werden einwandfrei eingefügt.

my $sth = $dbh->prepare("INSERT INTO content VALUES('$section_i', '$section', '$subject', '$date', '$body') ");

Whats wrong ?

Bis dann, Rolf

--
SELFforum - Das Tor zur Welt!
Theoretiker: Wie kommt das Kupfer in die Leitung?
Praktiker: Wie kommt der Strom in die Leitung?
  1. Hallo,

    Es ergibt sich die FM

    ====FM=====
    DBD::ODBC::db prepare failed: [Microsoft][ODBC Microsoft Access 97 -Treiber] Syntaxfehler (fehlender Operator) in Abfrageausdruck ''Q: Wie parse ich ein multiple select?

    ^Hier danach fehlt der Operator.

    my $sth = $dbh->prepare("INSERT INTO content VALUES('$section_i', '$section', '$subject', '$date', '$body') ");

    In welcher der Variablen steht denn der Text ?
    Er steht dort offensichtlich so drin:
    'Q: Wie parse ich ein multiple select? ....'

    Damit ergibt sich im Statement:

    INSERT INTO content VALUES('...', '...', '...', '...', ''Q: Wie parse ich ein multiple select? ....'')

    Das '' ist dann der Value und nach diesem und vor Q fehlt ein Operator.

    Tipp:Wussten Sie schon? Man kann soetwas erkennen, wenn man das SQL Statement zunächst einer String-Variablen zuweist und diese dann testweise ausgeben lässt.

    viele Grüße

    Axel

    1. Hallo Axel,

      vielen Dank!

      In welcher der Variablen steht denn der Text ?
      Er steht dort offensichtlich so drin:
      'Q: Wie parse ich ein multiple select? ....'

      Der folgende Text steht ganz genauso in der Variablen $body
      ====cut=======================================================
      Q: Wie parse ich ein multiple select?

      <select name="test" size="6" multiple>
      <option value="Test1"> Test1 </option>
      <option value="Test2"> Test2 </option>
      ...
      </select>

      A: Mit CGI.pm ist das wie folgt zu machen:
      use CGI qw(:standard);

      @selected_values = param('test');

      Dabei liefert die Methode param() alle ausgewählten Werte auf ein Array
      im Kontext, 'test' ist der Name des *selects*.

      ====cut========================================================

      Es sieht so aus, als würde ein Zeichen innerhalb dieses Textes nicht aktzeptiert werden, ist es das @ oder das ' - vermutlich Letzteres?

      Wie auch immer, ich werde das mal testen heute abend.

      Viele Grüße, Rolf

      --
      SELFforum - Das Tor zur Welt!
      Theoretiker: Wie kommt das Kupfer in die Leitung?
      Praktiker: Wie kommt der Strom in die Leitung?