这是来自 DBI 手册的标准插入示例:
my $query = q{
INSERT INTO sales (product_code, qty, price) VALUES (?, ?, ?)
};
my $sth = $dbh->prepare($query) or die $dbh->errstr;
while (<>) {
chomp;
my ($product_code, $qty, $price) = split /,/;
$sth->execute($product_code, $qty, $price) or die ($query . " " . $dbh->errstr);
}
$dbh->commit or die $dbh->errstr;
我稍微修改了一下代码,这样我就可以在查询失败时看到它(
die ($query . " " . $dbh->errstr)
)。但我仍然希望能够看到绑定值的查询(即执行的查询)。如何获取它?
编辑
顺便说一句,我发现了一个奇怪的方法,也可以看到带有绑定值的查询:你需要在查询中制造语法错误。例如,如果我将上面的查询更改为以下内容:
my $query = q{
xINSERT INTO sales (product_code, qty, price) VALUES (?, ?, ?)
};
我得到了我想要的结果:
DBD::mysql::st执行失败:您的SQL语法有误;请检查与您的MySQL服务器版本相对应的手册,以了解在'xINSERT INTO sample (product_code, qty, price) VALUES ('1', '2', '3')'处使用正确的语法
有时这确实有帮助。至少对我有帮助。