Hallo,
Ups...:
$query="INSERT test (a, b) VALUES(".param('a').", "bla")";
Wenn param('a') jetzt ein Fragezeichen entält wird das als Plartzhalter gewertet.
Warum verwendest Du das nicht zu Deinem Vorteil?
$sth = $dbh->prepare('INSERT test (a, b) VALUES(?,?)');
$sth->bind_param(1,param('a'));
$sth->bind_param(2,'bla');
oder gleich richtig
use DBI qw(:sql_types);
$sth = $dbh->prepare('INSERT test (a, b) VALUES(?,?,?)');
$sth->bind_param(1,param('a'),SQL_VARCHAR);
$sth->bind_param(2,'bla',SQL_VARCHAR);
$sth->bind_param(1,param('b'),SQL_INTEGER);
(Dann sind die SQL-Typen auch gleich mit geklärt.)
Außer daß Du das Problem 'umgangen' hast, gibt es noch eine Reihe von anderen Vorteilen, wie z.B. daß Du dann auch Texte q{auch mit Quotes (== ') oder Doublequotes (==") } abspeichern kannst, ohne umständlich mit quote() herum zu pfriemeln
Grüße
Klaus