Zum Inhalt springen

[Perl / CGI] Reg Ex bzw. -> param Problem


Empfohlene Beiträge

Moin zusammen,

bastel grad an nem GUI für eine Datenbank mit Perl / CGI.

Ich hab nun das Problem, dass ich gerne für alle Tabellen ein einziges Perl Script verwenden möchte.

Dieses Script soll einsimples insert into ausführen. Die Tabellen sind allerdings leider so unterschiedlich, dass ich nicht statisch vorgeben kann, welcher Paramter als String und welcher als Zahl an die Datenbank übergeben wird.

Ich brauche also eine "Methode" um einen übergebenen Parameter als String zu quoten (mit ' '), wenn dies ein String ist und eben ungequoted als Zahl zu übergeben, wenn es eine Zahl ist.

Das Script sieht bis dato wie folgt aus:


#Script zur manuellen (Nach-)pflege der DB Tabellen
#Fügt einen Datensatz in eine Tabelle ein
#übergebene Parameter: Tabellenname, der zu bearbeitenden Tabelle; Feldnamen dieser Tabelle;
use DBI;
use CGI;
#use diagnostics;
use POSIX qw(locale_h);
use locale;
setlocale(LC_CTYPE, "de_DE.Windows-1252");
# Declare variables
my $cgi = new CGI;
my $dsn = Team_Db; #System DSN im ODBC
my $table = $cgi->param('table');
my @fields= $cgi->param();
my @fieldvalues;
my $dbh = DBI->connect("DBI:ODBC:$dsn") or die DBI::errstr; #ODBC Verbindung herstellen
my $sql = "insert into $table values(";
my $i;


print $cgi->header;
print $cgi->start_html('Manuelle DB Pflege');
for ($i=0;$i<=$#fields;$i++)
{
$fieldvalues[$i] = $cgi->param($fields[$i]);
$sql .= "$fieldvalues[$i],";
}
chop($sql);
$sql .= ")";

print "SQL: $sql";
print $cgi->end_html();
[/php]

Innerhalb der for schleife wollte ich die Paramter quoten (oder eben auch nicht). Jemand ne Idee? Ich steh grad voll auf dem Schlauch...

Mucho Gracias schonmal !

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich doof ich .. .mir ist grad der Reg Ex eingefallen:


for ($i=0;$i<=$#fields;$i++)
{
$fieldvalues[$i] = $cgi->param($fields[$i]);
$sql .= "'$fieldvalues[$i]'," if ($fieldvalues[$i] =~ m/[A-Za-z]/);
$sql .= "$fieldvalues[$i]," if ($fieldvalues[$i] !~ m/[A-Za-z]/);
}
[/php]

Sorry .. naja ist halt Montag :rolleyes:

Thread kann zu...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Korrekt das mit den Sonderzeichen.

Eine Telefonnummer ist ein treffendes Beispiel (0555-555555), kein Buchstabe - aber muss als String genommen werden.

Ich würde Prüfen auf "Nur Zahlen und keine führende Null" (^[1-9][0-9]*$), eine führende Null weist i.d.R. auf einen String hin.

(Etwas) Komplizierter wirds wenn floats im Spiel sind :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...