【发布时间】:2011-09-21 16:37:15
【问题描述】:
这是来自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')' 附近使用的正确语法在第 1 行
有时它真的很有帮助。至少对我有影响。
【问题讨论】: