Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl dbi(select)获取数组中的empy字符串_Perl_Dbi_Fetchall_Arrayref - Fatal编程技术网

Perl dbi(select)获取数组中的empy字符串

Perl dbi(select)获取数组中的empy字符串,perl,dbi,fetchall,arrayref,Perl,Dbi,Fetchall,Arrayref,我有一个perl脚本,它连接到postgres db并获取它在上面运行的几个select语句。此输出用于逐字打印。当我在构建我的项目时,我并没有注意到在获取部分发生了什么事情,而是在我用word打印它之后,我注意到了一些奇怪的事情 我执行一个select语句并在arrayref中获取它,但是当我打印这个arrayreferentie时,我不仅在数组中得到了值,还得到了空字符串,de cli给了我一些错误代码。我先是想在读完一行后咬一口,这样它就可以转到下一行了,但这不起作用。有人已经解决了这个问

我有一个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;
            }

        }