Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.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返回列名的关联数组和仅定义的值?_Perl_Dbi - Fatal编程技术网

如何使用Perl::DBI返回列名的关联数组和仅定义的值?

如何使用Perl::DBI返回列名的关联数组和仅定义的值?,perl,dbi,Perl,Dbi,我使用了: my @ar = $stm->fetchrow_array #to remove undefined @ar = grep defined, @ar; 但这不会将列名显示为引用 所以我用 my $rec = $stm->fetchrow_arrayref 但是很难删除未定义的值,而且数组引用不是列名。关于*\u hashref方法的强制性警告:如果查询返回多个同名列,则只有一个列将添加到哈希中。此外,数据库服务器还确定诸如COUNT(*)等字段的名称,这可能会导致与其

我使用了:

my @ar = $stm->fetchrow_array
#to remove undefined
@ar = grep defined, @ar;
但这不会将列名显示为引用

所以我用

my $rec = $stm->fetchrow_arrayref

但是很难删除未定义的值,而且数组引用不是列名。

关于
*\u hashref
方法的强制性警告:如果查询返回多个同名列,则只有一个列将添加到哈希中。此外,数据库服务器还确定诸如
COUNT(*)
等字段的名称,这可能会导致与其他列发生冲突。您可以在SQL语句中使用列别名来避免这种情况,例如,
SELECT COUNT(*)AS foo
而不仅仅是
SELECT COUNT(*)
有人轻描淡写地说,在查询中有多个名称相同的列是一种不好的做法。@mpapec,不,不是,因为这些列可能位于不同的表中。@ikegami,我认为这是一个纯粹从SQL查询的角度来看的错误做法(有列别名来解决这个问题)。
my $rec = $stm->fetchrow_hashref;

my @to_delete = grep { !defined($rec->{$_}) } keys %$rec;

delete @{$rec}{@to_delete};