我无法使用以下代码正确检索输出。请帮我解决一下。
我在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
答案 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 = '';
}