Klaus Mock: "?" in Query

Beitrag lesen

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