Torsten: Durchsuchen einer Datenbank mit Perl mit Wildkarts

Beitrag lesen

so wie sich das liest, verwendest du im WHERE ein "=". Versuchs mal mit "LIKE".

Ich habe deinen Vorschlag mal mal angewendet, doch es funktioniert nicht.
Ich habe im Formular jetzt 006* eingegeben.

hier is nochmal mein Script:

#!/perl/bin/perl.exe

$os = "WINDOWS";

read(STDIN, $input, $ENV{'CONTENT_LENGTH'});

@pairs = split(/&/, $input);

foreach $pair (@pairs) {
          ($name, $value) = split(/=/, $pair);
          
          $name =~ tr/+/ /;
          $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
          $value =~ tr/+/ /;
          $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

$FORM{$name} = $value;
                  }

$name=$FORM{"name"};
$wert=$FORM{"wert"};

$max_rows = 1000000;
$rows = 0;
use CGI;
$cgi = new CGI;
use Win32::ODBC;
$DSN="stamm";
$db=new Win32::ODBC("DSN=stamm");

$sql_string = "SELECT * FROM Stellenplan WHERE $name LIKE '$wert'";  #Das "LIKE" war vorher "="

@FelderNamen = $db->FieldNames();
$spalten = @FelderNamen;

if(! $db->Sql($sql_string)){
    @FelderNamen = $db->FieldNames();  # Feldnamen
    $spalten = @FelderNamen;           # Spaltenanzahl ermitteln
    #Ausgabe der Daten in den Browser (Tabelle)
    print        $cgi->header,

$cgi->start_html('Ergebnis der SQL - Abfrage'),
          $cgi->h2('Ergebnis der SQL - Abfrage'),
          chop;
    print "<table border cellspacing=0 target="_blank"><tr>";
    print "<table border cellspacing=0 target="_blank"><tr>";
    for (@FelderNamen){
      print "<th>", $_, "</th>";
    }
    print "</tr><br>";
    # Und nun den Rest der Tabelle
    # FetchRow() gibt 0, wenn keine weiteren Daten anliegen
    while ($db->FetchRow() and $rows < $max_rows){
      print "<tr>";
      undef %Daten ;
      %Daten = $db->DataHash();
      $rows++;
      for ($i = 0; $i < $spalten; $i++){
        if ($Daten{$FelderNamen[$i]} gt ''){
          print "<td>", $Daten{$FelderNamen[$i]}, "</td>";
        }
        else{
          print "<td>-frei-</td>";
        }
      }
      print "</tr>";
    }
    print "</table>",
    $cgi->end_html;
    $db->Close() ;
  }
  else{
    print $cgi->header,
          $cgi->start_html('Fehler im SQL Statement'),
          $cgi->h2('Fehler im SQL Statement'),
          $cgi->p,
          $db->Error();
  }