perl中的fetchrow_hashref问题

时间:2016-08-12 10:00:23

标签: mysql perl

我无法使用以下代码正确检索输出。请帮我解决一下。

我在MySQL和Perl中运行的输出方式不同。

截至目前,我在使用Dumper时返回undef。但我希望它显示为null。

    $reactivate_sth = $dbh->prepare("
      SELECT
        a,
        b
      FROM
        table
      WHERE
        c = ?
      AND
        d = ?
      ORDER BY
        date DESC
    ");
$reactivate_sth->execute($c, $d);
print $result = $reactivate_sth->fetchrow_hashref();

输出:

MySQL的:

Empty set (0.00 sec)

的Perl:

HASH(0x3068198)

数据::自卸车

VAR1 = undef

2 个答案:

答案 0 :(得分:2)

您必须使代码更具可读性。使用 heredoc 来引用SQL语句通常很有用,比如

my $reactivate_sth = $dbh->prepare(<<END_SQL);
SELECT a, b
FROM table
WHERE c = ? AND d = ?
ORDER BY date DESC
END_SQL

$reactivate_sth->execute($c, $d);

my $result = $reactivate_sth->fetchrow_hashref;

现在$result对哈希的引用,因为您调用了fetchrow_hashref方法。正如您所发现的那样,打印它会产生类似HASH(0x1cc5a8)的内容。您需要访问哈希的元素才能理解结果

之后,我不知道你想要什么输出。您可以使用核心Data::Dumper模块显示您已检索到的记录,如此

use Data::Dumper;
print Dumper $result;

这有帮助吗?你还没有要求更多

答案 1 :(得分:1)

最后我找到了解决这个问题的方法。我不确定这个是否是一个正确的解决方案。

如果修复不合格,请指导我。

if (!defined $result->{''}) {
   $result = '';
}