加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Perl DBI:如何查看带有绑定值的失败查询?

发布时间:2020-12-15 23:36:10 所属栏目:大数据 来源:网络整理
导读:这是 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($produ
这是 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,$price) or die ($query . " " . $dbh->errstr);
     }
     $dbh->commit or die $dbh->errstr;

我修改了一下,所以我可以看到哪个查询失败(die($query.“”.$dbh-> errstr)).我仍然希望看到带有绑定值的查询(因为它已被执行).怎么弄?

编辑

顺便说一下,我发现了一种查看绑定值查询的尴尬方法:你必须在查询中出现语法错误.例如,如果我更改上面的查询:

my $query = q{
       xINSERT INTO sales (product_code,?)
     };

我按照自己的意愿得到了它:

DBD::mysql::st execute failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘xINSERT INTO sample (product_code,price) VALUES (‘1’,‘2’,‘3’)’ at line 1

有时真的有帮助.至少它对我有用.

解决方法

您可以使用DBI的 ParamValues来获取参数值,但是您不太可能在DBD中找到任何方法来获取SQL中的实际参数,因为它们主要在解析SQL后发送到数据库.您可以查看 DBIx::Log4perl以了解如何在错误处理程序中使用ParamValues.您可能还会发现DBIx :: Log4perl的某些部分很有用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读