Perl dbi(select)获取数组中的empy字符串
我有一个perl脚本,它连接到postgres db并获取它在上面运行的几个select语句。此输出用于逐字打印。当我在构建我的项目时,我并没有注意到在获取部分发生了什么事情,而是在我用word打印它之后,我注意到了一些奇怪的事情 我执行一个select语句并在arrayref中获取它,但是当我打印这个arrayreferentie时,我不仅在数组中得到了值,还得到了空字符串,de cli给了我一些错误代码。我先是想在读完一行后咬一口,这样它就可以转到下一行了,但这不起作用。有人已经解决了这个问题吗 这是我的代码:Perl dbi(select)获取数组中的empy字符串,perl,dbi,fetchall,arrayref,Perl,Dbi,Fetchall,Arrayref,我有一个perl脚本,它连接到postgres db并获取它在上面运行的几个select语句。此输出用于逐字打印。当我在构建我的项目时,我并没有注意到在获取部分发生了什么事情,而是在我用word打印它之后,我注意到了一些奇怪的事情 我执行一个select语句并在arrayref中获取它,但是当我打印这个arrayreferentie时,我不仅在数组中得到了值,还得到了空字符串,de cli给了我一些错误代码。我先是想在读完一行后咬一口,这样它就可以转到下一行了,但这不起作用。有人已经解决了这个问
my $query = $_[0]; #select multiple columns
my $SQL = $dbh->prepare($query);
$SQL -> execute();
my $headers = $SQL->{NAME};
my $databases = $SQL->fetchall_arrayref();
#testing fase , print the fetch to see what would be print in word
foreach my $row (@$databases)
{
my $databaseColumnNumber =0;
while ($databaseColumnNumber <= @$databases)
{
print "\n" , $row -> [$databaseColumnNumber];
$databaseColumnNumber++;
}
#chomp $row; ### this was a testing line to see if it would chomp after the empty value
}
$SQL->finish();
[编辑]
$VAR1 = [
[
'postgres',
'10',
'7856 kB'
],
[
'test',
'10',
'7529 kB'
],
[
'template1',
'10',
'6865 kB'
],
[
'template0',
'10',
'6865 kB'
]
];
$VAR1 = [
[
'city',
'408 kB',
'152 kB'
],
[
'countrylanguage',
'136 kB',
'88 kB'
],
[
'country',
'96 kB',
'56 kB'
]
];
我找到了自己问题的解决方案,供未来读者参考: 我的2个循环没有正确完成(我使用了foreach和一段时间),下面的代码完成了这项工作
foreach my $row (@$databases)
{
my $databaseColumnNumber =0;
foreach my $val (@$row)
{
print "\n" , $val;
}
}
您正在混合字符串和数据结构。查看
$数据库中的内容。执行以下操作<代码>使用数据::转储程序;my$databases=$SQL->fetchall_arrayref();打印转储程序$数据库代码>然后是您的问题并添加输出。好的,您得到了一个包含多个数组引用的数组引用。现在你到底想打印什么?我一直/现在都在想这个。这是数组postgres107556kb test107529kb的值,每行都是select语句的输出,每行有一个独立的值。在行的循环中,我也在行中循环,以获得一点也不奇怪的值。这叫做学习。向别人解释一些事情,让自己理解这些事情,通常会有帮助。干得好!:)请随意写下您的解决方案作为您自己的答案。你明天可以接受这个答案。请不要把它放在问题中。你可能还想阅读和阅读
foreach my $row (@$databases)
{
my $databaseColumnNumber =0;
foreach my $val (@$row)
{
print "\n" , $val;
}
}